react-native-quick-crypto 1.0.19 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QuickCrypto.podspec +12 -38
- package/README.md +2 -0
- package/android/CMakeLists.txt +3 -0
- package/android/build.gradle +5 -1
- package/cpp/argon2/HybridArgon2.cpp +10 -3
- package/cpp/blake3/HybridBlake3.cpp +5 -3
- package/cpp/cipher/CCMCipher.cpp +29 -16
- package/cpp/cipher/CCMCipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
- package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
- package/cpp/cipher/GCMCipher.cpp +14 -15
- package/cpp/cipher/HybridCipher.cpp +39 -36
- package/cpp/cipher/HybridCipher.hpp +17 -1
- package/cpp/cipher/HybridRsaCipher.cpp +74 -29
- package/cpp/cipher/OCBCipher.cpp +4 -3
- package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
- package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
- package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
- package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
- package/cpp/dh/HybridDiffieHellman.cpp +29 -0
- package/cpp/ec/HybridEcKeyPair.cpp +35 -33
- package/cpp/ec/HybridEcKeyPair.hpp +3 -7
- package/cpp/ecdh/HybridECDH.cpp +23 -0
- package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
- package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
- package/cpp/hash/HybridHash.cpp +5 -7
- package/cpp/hkdf/HybridHkdf.cpp +6 -4
- package/cpp/hmac/HybridHmac.cpp +4 -6
- package/cpp/kmac/HybridKmac.cpp +4 -4
- package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
- package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
- package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
- package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
- package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
- package/cpp/scrypt/HybridScrypt.cpp +6 -4
- package/cpp/sign/HybridSignHandle.cpp +25 -68
- package/cpp/sign/HybridVerifyHandle.cpp +23 -60
- package/cpp/utils/HybridUtils.cpp +213 -111
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/deps/simdutf/LICENSE-APACHE +201 -0
- package/deps/simdutf/LICENSE-MIT +18 -0
- package/deps/simdutf/README.md +2782 -0
- package/deps/simdutf/include/simdutf/avx512.h +79 -0
- package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
- package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
- package/deps/simdutf/include/simdutf/common_defs.h +186 -0
- package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
- package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
- package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
- package/deps/simdutf/include/simdutf/error.h +126 -0
- package/deps/simdutf/include/simdutf/implementation.h +7081 -0
- package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
- package/deps/simdutf/include/simdutf/portability.h +285 -0
- package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
- package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
- package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
- package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
- package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
- package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
- package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
- package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
- package/deps/simdutf/include/simdutf.h +26 -0
- package/deps/simdutf/include/simdutf_c.h +342 -0
- package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
- package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
- package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
- package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
- package/deps/simdutf/src/encoding_types.cpp +67 -0
- package/deps/simdutf/src/error.cpp +3 -0
- package/deps/simdutf/src/fallback/implementation.cpp +589 -0
- package/deps/simdutf/src/generic/ascii_validation.h +50 -0
- package/deps/simdutf/src/generic/base64.h +233 -0
- package/deps/simdutf/src/generic/base64lengths.h +63 -0
- package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
- package/deps/simdutf/src/generic/find.h +75 -0
- package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
- package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
- package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
- package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
- package/deps/simdutf/src/generic/utf16.h +73 -0
- package/deps/simdutf/src/generic/utf32.h +136 -0
- package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
- package/deps/simdutf/src/generic/utf8.h +92 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
- package/deps/simdutf/src/generic/validate_utf16.h +164 -0
- package/deps/simdutf/src/generic/validate_utf32.h +99 -0
- package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
- package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
- package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
- package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
- package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
- package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
- package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
- package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
- package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
- package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
- package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
- package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
- package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
- package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
- package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
- package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
- package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
- package/deps/simdutf/src/implementation.cpp +2526 -0
- package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
- package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
- package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
- package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
- package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
- package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
- package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
- package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
- package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
- package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
- package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
- package/deps/simdutf/src/ppc64/templates.cpp +91 -0
- package/deps/simdutf/src/rvv/implementation.cpp +138 -0
- package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
- package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
- package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
- package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
- package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
- package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
- package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
- package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
- package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
- package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
- package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
- package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
- package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
- package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
- package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
- package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
- package/deps/simdutf/src/simdutf/arm64.h +43 -0
- package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
- package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
- package/deps/simdutf/src/simdutf/fallback.h +42 -0
- package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
- package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
- package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
- package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
- package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
- package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
- package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
- package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
- package/deps/simdutf/src/simdutf/haswell.h +63 -0
- package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
- package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
- package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
- package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
- package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
- package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
- package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
- package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
- package/deps/simdutf/src/simdutf/icelake.h +81 -0
- package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
- package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
- package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
- package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
- package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
- package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
- package/deps/simdutf/src/simdutf/lasx.h +49 -0
- package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
- package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
- package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
- package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
- package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
- package/deps/simdutf/src/simdutf/lsx.h +52 -0
- package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
- package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
- package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
- package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
- package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
- package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
- package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
- package/deps/simdutf/src/simdutf/ppc64.h +40 -0
- package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
- package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
- package/deps/simdutf/src/simdutf/rvv.h +41 -0
- package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
- package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
- package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
- package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
- package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
- package/deps/simdutf/src/simdutf/westmere.h +59 -0
- package/deps/simdutf/src/simdutf.cpp +152 -0
- package/deps/simdutf/src/simdutf_c.cpp +525 -0
- package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
- package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
- package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
- package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
- package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
- package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
- package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
- package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
- package/lib/commonjs/argon2.js +51 -2
- package/lib/commonjs/argon2.js.map +1 -1
- package/lib/commonjs/cipher.js +109 -11
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/dsa.js +8 -2
- package/lib/commonjs/dsa.js.map +1 -1
- package/lib/commonjs/hash.js +15 -5
- package/lib/commonjs/hash.js.map +1 -1
- package/lib/commonjs/hkdf.js +33 -6
- package/lib/commonjs/hkdf.js.map +1 -1
- package/lib/commonjs/hmac.js +15 -5
- package/lib/commonjs/hmac.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +10 -4
- package/lib/commonjs/keys/publicCipher.js.map +1 -1
- package/lib/commonjs/random.js +11 -2
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +12 -5
- package/lib/commonjs/rsa.js.map +1 -1
- package/lib/commonjs/scrypt.js +47 -6
- package/lib/commonjs/scrypt.js.map +1 -1
- package/lib/commonjs/subtle.js +76 -5
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/cipher.js +18 -7
- package/lib/commonjs/utils/cipher.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +33 -9
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/timingSafeEqual.js +7 -2
- package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
- package/lib/commonjs/x509certificate.js +6 -6
- package/lib/commonjs/x509certificate.js.map +1 -1
- package/lib/module/argon2.js +51 -2
- package/lib/module/argon2.js.map +1 -1
- package/lib/module/cipher.js +109 -11
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/dsa.js +8 -2
- package/lib/module/dsa.js.map +1 -1
- package/lib/module/hash.js +15 -5
- package/lib/module/hash.js.map +1 -1
- package/lib/module/hkdf.js +33 -6
- package/lib/module/hkdf.js.map +1 -1
- package/lib/module/hmac.js +15 -5
- package/lib/module/hmac.js.map +1 -1
- package/lib/module/keys/publicCipher.js +10 -4
- package/lib/module/keys/publicCipher.js.map +1 -1
- package/lib/module/random.js +11 -2
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +11 -4
- package/lib/module/rsa.js.map +1 -1
- package/lib/module/scrypt.js +47 -6
- package/lib/module/scrypt.js.map +1 -1
- package/lib/module/subtle.js +76 -5
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/cipher.js +18 -7
- package/lib/module/utils/cipher.js.map +1 -1
- package/lib/module/utils/conversion.js +33 -9
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/timingSafeEqual.js +8 -3
- package/lib/module/utils/timingSafeEqual.js.map +1 -1
- package/lib/module/x509certificate.js +6 -6
- package/lib/module/x509certificate.js.map +1 -1
- package/lib/typescript/argon2.d.ts.map +1 -1
- package/lib/typescript/cipher.d.ts +2 -2
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/dsa.d.ts.map +1 -1
- package/lib/typescript/hash.d.ts +2 -2
- package/lib/typescript/hash.d.ts.map +1 -1
- package/lib/typescript/hkdf.d.ts.map +1 -1
- package/lib/typescript/hmac.d.ts +2 -2
- package/lib/typescript/hmac.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts.map +1 -1
- package/lib/typescript/scrypt.d.ts.map +1 -1
- package/lib/typescript/specs/utils.nitro.d.ts +0 -2
- package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/cipher.d.ts +13 -1
- package/lib/typescript/utils/cipher.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts +9 -6
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
- package/lib/typescript/x509certificate.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
- package/package.json +38 -6
- package/src/argon2.ts +80 -2
- package/src/cipher.ts +139 -15
- package/src/dsa.ts +11 -2
- package/src/hash.ts +17 -7
- package/src/hkdf.ts +44 -6
- package/src/hmac.ts +17 -7
- package/src/keys/publicCipher.ts +10 -4
- package/src/random.ts +11 -2
- package/src/rsa.ts +18 -4
- package/src/scrypt.ts +73 -6
- package/src/specs/utils.nitro.ts +0 -2
- package/src/subtle.ts +90 -8
- package/src/utils/cipher.ts +30 -8
- package/src/utils/conversion.ts +58 -20
- package/src/utils/timingSafeEqual.ts +8 -3
- package/src/x509certificate.ts +5 -6
- package/deps/blake3/.cargo/config.toml +0 -2
- package/deps/blake3/.git-blame-ignore-revs +0 -2
- package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
- package/deps/blake3/.github/workflows/ci.yml +0 -491
- package/deps/blake3/.github/workflows/tag.yml +0 -43
- package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
- package/deps/blake3/CONTRIBUTING.md +0 -31
- package/deps/blake3/Cargo.toml +0 -135
- package/deps/blake3/b3sum/Cargo.lock +0 -513
- package/deps/blake3/b3sum/Cargo.toml +0 -26
- package/deps/blake3/b3sum/README.md +0 -72
- package/deps/blake3/b3sum/src/main.rs +0 -564
- package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
- package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
- package/deps/blake3/b3sum/what_does_check_do.md +0 -176
- package/deps/blake3/benches/bench.rs +0 -623
- package/deps/blake3/build.rs +0 -389
- package/deps/blake3/c/CMakeLists.txt +0 -383
- package/deps/blake3/c/CMakePresets.json +0 -73
- package/deps/blake3/c/Makefile.testing +0 -82
- package/deps/blake3/c/blake3-config.cmake.in +0 -14
- package/deps/blake3/c/blake3_avx2.c +0 -326
- package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
- package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
- package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
- package/deps/blake3/c/blake3_avx512.c +0 -1388
- package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
- package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
- package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
- package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
- package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
- package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
- package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
- package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
- package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
- package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
- package/deps/blake3/c/blake3_sse2.c +0 -566
- package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
- package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
- package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
- package/deps/blake3/c/blake3_sse41.c +0 -560
- package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
- package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
- package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
- package/deps/blake3/c/blake3_tbb.cpp +0 -37
- package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
- package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
- package/deps/blake3/c/example.c +0 -36
- package/deps/blake3/c/example_tbb.c +0 -57
- package/deps/blake3/c/libblake3.pc.in +0 -12
- package/deps/blake3/c/main.c +0 -166
- package/deps/blake3/c/test.py +0 -97
- package/deps/blake3/media/B3.svg +0 -70
- package/deps/blake3/media/BLAKE3.svg +0 -85
- package/deps/blake3/media/speed.svg +0 -1474
- package/deps/blake3/reference_impl/Cargo.toml +0 -8
- package/deps/blake3/reference_impl/README.md +0 -14
- package/deps/blake3/reference_impl/reference_impl.rs +0 -374
- package/deps/blake3/src/ffi_avx2.rs +0 -65
- package/deps/blake3/src/ffi_avx512.rs +0 -169
- package/deps/blake3/src/ffi_neon.rs +0 -82
- package/deps/blake3/src/ffi_sse2.rs +0 -126
- package/deps/blake3/src/ffi_sse41.rs +0 -126
- package/deps/blake3/src/guts.rs +0 -60
- package/deps/blake3/src/hazmat.rs +0 -704
- package/deps/blake3/src/io.rs +0 -64
- package/deps/blake3/src/join.rs +0 -92
- package/deps/blake3/src/lib.rs +0 -1835
- package/deps/blake3/src/platform.rs +0 -587
- package/deps/blake3/src/portable.rs +0 -198
- package/deps/blake3/src/rust_avx2.rs +0 -474
- package/deps/blake3/src/rust_sse2.rs +0 -775
- package/deps/blake3/src/rust_sse41.rs +0 -766
- package/deps/blake3/src/test.rs +0 -1049
- package/deps/blake3/src/traits.rs +0 -227
- package/deps/blake3/src/wasm32_simd.rs +0 -794
- package/deps/blake3/test_vectors/Cargo.toml +0 -19
- package/deps/blake3/test_vectors/cross_test.sh +0 -25
- package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
- package/deps/blake3/test_vectors/src/lib.rs +0 -350
- package/deps/blake3/test_vectors/test_vectors.json +0 -217
- package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
- package/deps/blake3/tools/compiler_version/build.rs +0 -6
- package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
- package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
- package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
- package/deps/blake3/tools/release.md +0 -16
- package/deps/ncrypto/.bazelignore +0 -4
- package/deps/ncrypto/.bazelrc +0 -1
- package/deps/ncrypto/.bazelversion +0 -1
- package/deps/ncrypto/.clang-format +0 -111
- package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
- package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
- package/deps/ncrypto/.github/workflows/linter.yml +0 -38
- package/deps/ncrypto/.github/workflows/macos.yml +0 -43
- package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
- package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
- package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
- package/deps/ncrypto/.python-version +0 -1
- package/deps/ncrypto/.release-please-manifest.json +0 -3
- package/deps/ncrypto/BUILD.bazel +0 -44
- package/deps/ncrypto/CHANGELOG.md +0 -37
- package/deps/ncrypto/CMakeLists.txt +0 -79
- package/deps/ncrypto/MODULE.bazel +0 -16
- package/deps/ncrypto/MODULE.bazel.lock +0 -461
- package/deps/ncrypto/cmake/CPM.cmake +0 -1225
- package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
- package/deps/ncrypto/ncrypto.pc.in +0 -10
- package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
- package/deps/ncrypto/pyproject.toml +0 -38
- package/deps/ncrypto/release-please-config.json +0 -11
- package/deps/ncrypto/src/CMakeLists.txt +0 -40
- package/deps/ncrypto/tests/BUILD.bazel +0 -11
- package/deps/ncrypto/tests/CMakeLists.txt +0 -7
- package/deps/ncrypto/tests/basic.cpp +0 -856
- package/deps/ncrypto/tools/run-clang-format.sh +0 -42
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
template <typename T> T min(T a, T b) { return a <= b ? a : b; }
|
|
2
|
+
|
|
3
|
+
std::pair<const char *, size_t> ppc64_utf8_length_from_latin1(const char *input,
|
|
4
|
+
size_t length) {
|
|
5
|
+
constexpr size_t N = vector_u8::ELEMENTS;
|
|
6
|
+
length = (length / N);
|
|
7
|
+
|
|
8
|
+
size_t count = length * N;
|
|
9
|
+
while (length != 0) {
|
|
10
|
+
vector_u32 partial = vector_u32::zero();
|
|
11
|
+
|
|
12
|
+
// partial accumulator has 32 bits => this yields (2^31 / 16)
|
|
13
|
+
size_t chunk = min(length, size_t(0xffffffff / N));
|
|
14
|
+
length -= chunk;
|
|
15
|
+
while (chunk != 0) {
|
|
16
|
+
auto local = vector_u8::zero();
|
|
17
|
+
// local accumulator has 8 bits => this yields 255 max (we increment by 1
|
|
18
|
+
// in each iteration)
|
|
19
|
+
const size_t n = min(chunk, size_t(255));
|
|
20
|
+
chunk -= n;
|
|
21
|
+
for (size_t i = 0; i < n; i++) {
|
|
22
|
+
const auto in = vector_i8::load(input);
|
|
23
|
+
input += N;
|
|
24
|
+
|
|
25
|
+
local -= as_vector_u8(in < vector_i8::splat(0));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
partial = sum4bytes(local, partial);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
for (int i = 0; i < vector_u32::ELEMENTS; i++) {
|
|
32
|
+
count += size_t(partial.value[i]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return std::make_pair(input, count);
|
|
37
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
template <endianness big_endian>
|
|
2
|
+
simd8<uint8_t> utf16_gather_high_bytes(const simd16<uint16_t> in0,
|
|
3
|
+
const simd16<uint16_t> in1) {
|
|
4
|
+
if (big_endian) {
|
|
5
|
+
const vec_u8_t pack_high = {
|
|
6
|
+
0, 2, 4, 6, 8, 10, 12, 14, // in0
|
|
7
|
+
16, 18, 20, 22, 24, 26, 28, 30 // in1
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
return vec_perm(vec_u8_t(in0.value), vec_u8_t(in1.value), pack_high);
|
|
11
|
+
} else {
|
|
12
|
+
const vec_u8_t pack_high = {
|
|
13
|
+
1, 3, 5, 7, 9, 11, 13, 15, // in0
|
|
14
|
+
17, 19, 21, 23, 25, 27, 29, 31 // in1
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return vec_perm(vec_u8_t(in0.value), vec_u8_t(in1.value), pack_high);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Template `convert_impl` implements generic conversion routine between
|
|
3
|
+
different encodings. Procedure returns the number of written elements,
|
|
4
|
+
or zero in the case of error.
|
|
5
|
+
|
|
6
|
+
Parameters:
|
|
7
|
+
* VectorizedConvert - vectorized procedure that returns structure having
|
|
8
|
+
three fields: error_code (err), const Source* (input), Destination*
|
|
9
|
+
(output)
|
|
10
|
+
* ScalarConvert - scalar procedure that carries on conversion of tail
|
|
11
|
+
* Source - type of input char (like char16_t, char)
|
|
12
|
+
* Destination - type of input char
|
|
13
|
+
*/
|
|
14
|
+
template <typename VectorizedConvert, typename ScalarConvert, typename Source,
|
|
15
|
+
typename Destination>
|
|
16
|
+
size_t convert_impl(VectorizedConvert vectorized_convert,
|
|
17
|
+
ScalarConvert scalar_convert, const Source *buf, size_t len,
|
|
18
|
+
Destination *output) {
|
|
19
|
+
const auto vr = vectorized_convert(buf, len, output);
|
|
20
|
+
const size_t consumed = vr.input - buf;
|
|
21
|
+
const size_t written = vr.output - output;
|
|
22
|
+
if (vr.err != simdutf::error_code::SUCCESS) {
|
|
23
|
+
if (vr.err == simdutf::error_code::OTHER) {
|
|
24
|
+
// Vectorized procedure detected an error, but does not know
|
|
25
|
+
// exact position. The scalar procedure rescan the portion of
|
|
26
|
+
// input and figure out where the error is located.
|
|
27
|
+
return scalar_convert(vr.input, len - consumed, vr.output);
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (consumed == len) {
|
|
33
|
+
return written;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const auto ret = scalar_convert(vr.input, len - consumed, vr.output);
|
|
37
|
+
if (ret == 0) {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return written + ret;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
Template `convert_with_errors_impl` implements generic conversion routine
|
|
46
|
+
between different encodings. Procedure returns a `result` instance ---
|
|
47
|
+
please refer to its documentation for details.
|
|
48
|
+
|
|
49
|
+
Parameters:
|
|
50
|
+
* VectorizedConvert - vectorized procedure that returns structure having
|
|
51
|
+
three fields: error_code (err), const Source* (input), Destination*
|
|
52
|
+
(output)
|
|
53
|
+
* ScalarConvert - scalar procedure that carries on conversion of tail
|
|
54
|
+
* Source - type of input char (like char16_t, char)
|
|
55
|
+
* Destination - type of input char
|
|
56
|
+
*/
|
|
57
|
+
template <typename VectorizedConvert, typename ScalarConvert, typename Source,
|
|
58
|
+
typename Destination>
|
|
59
|
+
simdutf::result convert_with_errors_impl(VectorizedConvert vectorized_convert,
|
|
60
|
+
ScalarConvert scalar_convert,
|
|
61
|
+
const Source *buf, size_t len,
|
|
62
|
+
Destination *output) {
|
|
63
|
+
|
|
64
|
+
const auto vr = vectorized_convert(buf, len, output);
|
|
65
|
+
const size_t consumed = vr.input - buf;
|
|
66
|
+
const size_t written = vr.output - output;
|
|
67
|
+
if (vr.err != simdutf::error_code::SUCCESS) {
|
|
68
|
+
if (vr.err == simdutf::error_code::OTHER) {
|
|
69
|
+
// Vectorized procedure detected an error, but does not know
|
|
70
|
+
// exact position. The scalar procedure rescan the portion of
|
|
71
|
+
// input and figure out where the error is located.
|
|
72
|
+
auto sr = scalar_convert(vr.input, len - consumed, vr.output);
|
|
73
|
+
sr.count += consumed;
|
|
74
|
+
return sr;
|
|
75
|
+
}
|
|
76
|
+
return simdutf::result(vr.err, consumed);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (consumed == len) {
|
|
80
|
+
return simdutf::result(simdutf::error_code::SUCCESS, written);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
simdutf::result sr = scalar_convert(vr.input, len - consumed, vr.output);
|
|
84
|
+
if (sr.is_ok()) {
|
|
85
|
+
sr.count += written;
|
|
86
|
+
} else {
|
|
87
|
+
sr.count += consumed;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return sr;
|
|
91
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#include "simdutf/rvv/begin.h"
|
|
2
|
+
namespace simdutf {
|
|
3
|
+
namespace SIMDUTF_IMPLEMENTATION {
|
|
4
|
+
namespace {
|
|
5
|
+
#ifndef SIMDUTF_RVV_H
|
|
6
|
+
#error "rvv.h must be included"
|
|
7
|
+
#endif
|
|
8
|
+
|
|
9
|
+
} // unnamed namespace
|
|
10
|
+
} // namespace SIMDUTF_IMPLEMENTATION
|
|
11
|
+
} // namespace simdutf
|
|
12
|
+
|
|
13
|
+
//
|
|
14
|
+
// Implementation-specific overrides
|
|
15
|
+
//
|
|
16
|
+
namespace simdutf {
|
|
17
|
+
namespace SIMDUTF_IMPLEMENTATION {
|
|
18
|
+
#include "rvv/rvv_helpers.inl.cpp"
|
|
19
|
+
|
|
20
|
+
#include "rvv/rvv_length_from.inl.cpp"
|
|
21
|
+
#include "rvv/rvv_validate.inl.cpp"
|
|
22
|
+
|
|
23
|
+
#include "rvv/rvv_latin1_to.inl.cpp"
|
|
24
|
+
#include "rvv/rvv_utf16_to.inl.cpp"
|
|
25
|
+
|
|
26
|
+
#include "rvv/rvv_utf32_to.inl.cpp"
|
|
27
|
+
#include "rvv/rvv_utf8_to.inl.cpp"
|
|
28
|
+
|
|
29
|
+
#if SIMDUTF_FEATURE_BASE64
|
|
30
|
+
#include "rvv/rvv_find.cpp"
|
|
31
|
+
#endif // SIMDUTF_FEATURE_BASE64
|
|
32
|
+
|
|
33
|
+
#if SIMDUTF_FEATURE_UTF16
|
|
34
|
+
#include "rvv/rvv_utf16fix.cpp"
|
|
35
|
+
#endif // SIMDUTF_FEATURE_UTF16
|
|
36
|
+
|
|
37
|
+
#if SIMDUTF_FEATURE_DETECT_ENCODING
|
|
38
|
+
simdutf_warn_unused int
|
|
39
|
+
implementation::detect_encodings(const char *input,
|
|
40
|
+
size_t length) const noexcept {
|
|
41
|
+
// If there is a BOM, then we trust it.
|
|
42
|
+
auto bom_encoding = simdutf::BOM::check_bom(input, length);
|
|
43
|
+
if (bom_encoding != encoding_type::unspecified)
|
|
44
|
+
return bom_encoding;
|
|
45
|
+
// todo: reimplement as a one-pass algorithm.
|
|
46
|
+
int out = 0;
|
|
47
|
+
if (validate_utf8(input, length))
|
|
48
|
+
out |= encoding_type::UTF8;
|
|
49
|
+
if (length % 2 == 0) {
|
|
50
|
+
if (validate_utf16le(reinterpret_cast<const char16_t *>(input), length / 2))
|
|
51
|
+
out |= encoding_type::UTF16_LE;
|
|
52
|
+
}
|
|
53
|
+
if (length % 4 == 0) {
|
|
54
|
+
if (validate_utf32(reinterpret_cast<const char32_t *>(input), length / 4))
|
|
55
|
+
out |= encoding_type::UTF32_LE;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
#endif // SIMDUTF_FEATURE_DETECT_ENCODING
|
|
61
|
+
|
|
62
|
+
#if SIMDUTF_FEATURE_BASE64
|
|
63
|
+
simdutf_warn_unused result implementation::base64_to_binary(
|
|
64
|
+
const char *input, size_t length, char *output, base64_options options,
|
|
65
|
+
last_chunk_handling_options last_chunk_options) const noexcept {
|
|
66
|
+
return simdutf::scalar::base64::base64_to_binary_details_impl(
|
|
67
|
+
input, length, output, options, last_chunk_options);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
simdutf_warn_unused result implementation::base64_to_binary(
|
|
71
|
+
const char16_t *input, size_t length, char *output, base64_options options,
|
|
72
|
+
last_chunk_handling_options last_chunk_options) const noexcept {
|
|
73
|
+
return simdutf::scalar::base64::base64_to_binary_details_impl(
|
|
74
|
+
input, length, output, options, last_chunk_options);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
simdutf_warn_unused full_result implementation::base64_to_binary_details(
|
|
78
|
+
const char *input, size_t length, char *output, base64_options options,
|
|
79
|
+
last_chunk_handling_options last_chunk_options) const noexcept {
|
|
80
|
+
return simdutf::scalar::base64::base64_to_binary_details_impl(
|
|
81
|
+
input, length, output, options, last_chunk_options);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
simdutf_warn_unused full_result implementation::base64_to_binary_details(
|
|
85
|
+
const char16_t *input, size_t length, char *output, base64_options options,
|
|
86
|
+
last_chunk_handling_options last_chunk_options) const noexcept {
|
|
87
|
+
return simdutf::scalar::base64::base64_to_binary_details_impl(
|
|
88
|
+
input, length, output, options, last_chunk_options);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
size_t implementation::binary_to_base64(const char *input, size_t length,
|
|
92
|
+
char *output,
|
|
93
|
+
base64_options options) const noexcept {
|
|
94
|
+
return scalar::base64::tail_encode_base64(output, input, length, options);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
size_t implementation::binary_to_base64_with_lines(
|
|
98
|
+
const char *input, size_t length, char *output, size_t line_length,
|
|
99
|
+
base64_options options) const noexcept {
|
|
100
|
+
return scalar::base64::tail_encode_base64_impl<true>(output, input, length,
|
|
101
|
+
options, line_length);
|
|
102
|
+
}
|
|
103
|
+
#endif // SIMDUTF_FEATURE_BASE64
|
|
104
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
105
|
+
simdutf_warn_unused result
|
|
106
|
+
implementation::utf8_length_from_utf16le_with_replacement(
|
|
107
|
+
const char16_t *input, size_t length) const noexcept {
|
|
108
|
+
return scalar::utf16::utf8_length_from_utf16_with_replacement<
|
|
109
|
+
endianness::LITTLE>(input, length);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
simdutf_warn_unused result
|
|
113
|
+
implementation::utf8_length_from_utf16be_with_replacement(
|
|
114
|
+
const char16_t *input, size_t length) const noexcept {
|
|
115
|
+
return scalar::utf16::utf8_length_from_utf16_with_replacement<
|
|
116
|
+
endianness::BIG>(input, length);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
simdutf_warn_unused size_t
|
|
120
|
+
implementation::convert_utf16le_to_utf8_with_replacement(
|
|
121
|
+
const char16_t *input, size_t length, char *utf8_buffer) const noexcept {
|
|
122
|
+
return scalar::utf16_to_utf8::convert_with_replacement<endianness::LITTLE>(
|
|
123
|
+
input, length, utf8_buffer);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
simdutf_warn_unused size_t
|
|
127
|
+
implementation::convert_utf16be_to_utf8_with_replacement(
|
|
128
|
+
const char16_t *input, size_t length, char *utf8_buffer) const noexcept {
|
|
129
|
+
return scalar::utf16_to_utf8::convert_with_replacement<endianness::BIG>(
|
|
130
|
+
input, length, utf8_buffer);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
134
|
+
|
|
135
|
+
} // namespace SIMDUTF_IMPLEMENTATION
|
|
136
|
+
} // namespace simdutf
|
|
137
|
+
|
|
138
|
+
#include "simdutf/rvv/end.h"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const char *implementation::find(const char *start, const char *end,
|
|
2
|
+
char character) const noexcept {
|
|
3
|
+
const char *src = start;
|
|
4
|
+
for (size_t len = end - start, vl; len > 0; len -= vl, src += vl) {
|
|
5
|
+
vl = __riscv_vsetvl_e8m8(len);
|
|
6
|
+
vuint8m8_t v = __riscv_vle8_v_u8m8((uint8_t *)src, vl);
|
|
7
|
+
long idx =
|
|
8
|
+
__riscv_vfirst_m_b1(__riscv_vmseq_vx_u8m8_b1(v, character, vl), vl);
|
|
9
|
+
if (idx >= 0)
|
|
10
|
+
return src + idx;
|
|
11
|
+
}
|
|
12
|
+
return end;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const char16_t *implementation::find(const char16_t *start, const char16_t *end,
|
|
16
|
+
char16_t character) const noexcept {
|
|
17
|
+
const char16_t *src = start;
|
|
18
|
+
for (size_t len = end - start, vl; len > 0; len -= vl, src += vl) {
|
|
19
|
+
vl = __riscv_vsetvl_e16m8(len);
|
|
20
|
+
vuint16m8_t v = __riscv_vle16_v_u16m8((uint16_t *)src, vl);
|
|
21
|
+
long idx =
|
|
22
|
+
__riscv_vfirst_m_b2(__riscv_vmseq_vx_u16m8_b2(v, character, vl), vl);
|
|
23
|
+
if (idx >= 0)
|
|
24
|
+
return src + idx;
|
|
25
|
+
}
|
|
26
|
+
return end;
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
template <simdutf_ByteFlip bflip>
|
|
2
|
+
simdutf_really_inline static size_t
|
|
3
|
+
rvv_utf32_store_utf16_m4(uint16_t *dst, vuint32m4_t utf32, size_t vl,
|
|
4
|
+
vbool4_t m4even) {
|
|
5
|
+
/* convert [000000000000aaaa|aaaaaabbbbbbbbbb]
|
|
6
|
+
* to [110111bbbbbbbbbb|110110aaaaaaaaaa] */
|
|
7
|
+
vuint32m4_t sur = __riscv_vsub_vx_u32m4(utf32, 0x10000, vl);
|
|
8
|
+
sur = __riscv_vor_vv_u32m4(__riscv_vsll_vx_u32m4(sur, 16, vl),
|
|
9
|
+
__riscv_vsrl_vx_u32m4(sur, 10, vl), vl);
|
|
10
|
+
sur = __riscv_vand_vx_u32m4(sur, 0x3FF03FF, vl);
|
|
11
|
+
sur = __riscv_vor_vx_u32m4(sur, 0xDC00D800, vl);
|
|
12
|
+
/* merge 1 byte utf32 and 2 byte sur */
|
|
13
|
+
vbool8_t m4 = __riscv_vmsgtu_vx_u32m4_b8(utf32, 0xFFFF, vl);
|
|
14
|
+
vuint16m4_t utf32_16 = __riscv_vreinterpret_v_u32m4_u16m4(
|
|
15
|
+
__riscv_vmerge_vvm_u32m4(utf32, sur, m4, vl));
|
|
16
|
+
/* compress and store */
|
|
17
|
+
vbool4_t mOut = __riscv_vmor_mm_b4(
|
|
18
|
+
__riscv_vmsne_vx_u16m4_b4(utf32_16, 0, vl * 2), m4even, vl * 2);
|
|
19
|
+
vuint16m4_t vout = __riscv_vcompress_vm_u16m4(utf32_16, mOut, vl * 2);
|
|
20
|
+
vl = __riscv_vcpop_m_b4(mOut, vl * 2);
|
|
21
|
+
__riscv_vse16_v_u16m4(dst, simdutf_byteflip<bflip>(vout, vl), vl);
|
|
22
|
+
return vl;
|
|
23
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
2
|
+
simdutf_warn_unused size_t implementation::convert_latin1_to_utf8(
|
|
3
|
+
const char *src, size_t len, char *dst) const noexcept {
|
|
4
|
+
char *beg = dst;
|
|
5
|
+
for (size_t vl, vlOut; len > 0; len -= vl, src += vl, dst += vlOut) {
|
|
6
|
+
vl = __riscv_vsetvl_e8m2(len);
|
|
7
|
+
vuint8m2_t v1 = __riscv_vle8_v_u8m2((uint8_t *)src, vl);
|
|
8
|
+
vbool4_t nascii =
|
|
9
|
+
__riscv_vmslt_vx_i8m2_b4(__riscv_vreinterpret_v_u8m2_i8m2(v1), 0, vl);
|
|
10
|
+
size_t cnt = __riscv_vcpop_m_b4(nascii, vl);
|
|
11
|
+
vlOut = vl + cnt;
|
|
12
|
+
if (cnt == 0) {
|
|
13
|
+
__riscv_vse8_v_u8m2((uint8_t *)dst, v1, vlOut);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
vuint8m2_t v0 =
|
|
18
|
+
__riscv_vor_vx_u8m2(__riscv_vsrl_vx_u8m2(v1, 6, vl), 0b11000000, vl);
|
|
19
|
+
v1 = __riscv_vand_vx_u8m2_mu(nascii, v1, v1, 0b10111111, vl);
|
|
20
|
+
|
|
21
|
+
vuint8m4_t wide =
|
|
22
|
+
__riscv_vreinterpret_v_u16m4_u8m4(__riscv_vwmaccu_vx_u16m4(
|
|
23
|
+
__riscv_vwaddu_vv_u16m4(v0, v1, vl), 0xFF, v1, vl));
|
|
24
|
+
vbool2_t mask = __riscv_vmsgtu_vx_u8m4_b2(
|
|
25
|
+
__riscv_vsub_vx_u8m4(wide, 0b11000000, vl * 2), 1, vl * 2);
|
|
26
|
+
vuint8m4_t comp = __riscv_vcompress_vm_u8m4(wide, mask, vl * 2);
|
|
27
|
+
|
|
28
|
+
__riscv_vse8_v_u8m4((uint8_t *)dst, comp, vlOut);
|
|
29
|
+
}
|
|
30
|
+
return dst - beg;
|
|
31
|
+
}
|
|
32
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
33
|
+
|
|
34
|
+
#if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
|
|
35
|
+
simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(
|
|
36
|
+
const char *src, size_t len, char16_t *dst) const noexcept {
|
|
37
|
+
char16_t *beg = dst;
|
|
38
|
+
for (size_t vl; len > 0; len -= vl, src += vl, dst += vl) {
|
|
39
|
+
vl = __riscv_vsetvl_e8m4(len);
|
|
40
|
+
vuint8m4_t v = __riscv_vle8_v_u8m4((uint8_t *)src, vl);
|
|
41
|
+
__riscv_vse16_v_u16m8((uint16_t *)dst, __riscv_vzext_vf2_u16m8(v, vl), vl);
|
|
42
|
+
}
|
|
43
|
+
return dst - beg;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(
|
|
47
|
+
const char *src, size_t len, char16_t *dst) const noexcept {
|
|
48
|
+
char16_t *beg = dst;
|
|
49
|
+
for (size_t vl; len > 0; len -= vl, src += vl, dst += vl) {
|
|
50
|
+
vl = __riscv_vsetvl_e8m4(len);
|
|
51
|
+
vuint8m4_t v = __riscv_vle8_v_u8m4((uint8_t *)src, vl);
|
|
52
|
+
__riscv_vse16_v_u16m8(
|
|
53
|
+
(uint16_t *)dst,
|
|
54
|
+
__riscv_vsll_vx_u16m8(__riscv_vzext_vf2_u16m8(v, vl), 8, vl), vl);
|
|
55
|
+
}
|
|
56
|
+
return dst - beg;
|
|
57
|
+
}
|
|
58
|
+
#endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
|
|
59
|
+
|
|
60
|
+
#if SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
|
|
61
|
+
simdutf_warn_unused size_t implementation::convert_latin1_to_utf32(
|
|
62
|
+
const char *src, size_t len, char32_t *dst) const noexcept {
|
|
63
|
+
char32_t *beg = dst;
|
|
64
|
+
for (size_t vl; len > 0; len -= vl, src += vl, dst += vl) {
|
|
65
|
+
vl = __riscv_vsetvl_e8m2(len);
|
|
66
|
+
vuint8m2_t v = __riscv_vle8_v_u8m2((uint8_t *)src, vl);
|
|
67
|
+
__riscv_vse32_v_u32m8((uint32_t *)dst, __riscv_vzext_vf4_u32m8(v, vl), vl);
|
|
68
|
+
}
|
|
69
|
+
return dst - beg;
|
|
70
|
+
}
|
|
71
|
+
#endif // SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
#if SIMDUTF_FEATURE_UTF16
|
|
2
|
+
simdutf_warn_unused size_t
|
|
3
|
+
implementation::count_utf16le(const char16_t *src, size_t len) const noexcept {
|
|
4
|
+
return utf32_length_from_utf16le(src, len);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
simdutf_warn_unused size_t
|
|
8
|
+
implementation::count_utf16be(const char16_t *src, size_t len) const noexcept {
|
|
9
|
+
return utf32_length_from_utf16be(src, len);
|
|
10
|
+
}
|
|
11
|
+
#endif // SIMDUTF_FEATURE_UTF16
|
|
12
|
+
|
|
13
|
+
#if SIMDUTF_FEATURE_UTF8
|
|
14
|
+
simdutf_warn_unused size_t
|
|
15
|
+
implementation::count_utf8(const char *src, size_t len) const noexcept {
|
|
16
|
+
return utf32_length_from_utf8(src, len);
|
|
17
|
+
}
|
|
18
|
+
#endif // SIMDUTF_FEATURE_UTF8
|
|
19
|
+
|
|
20
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
21
|
+
simdutf_warn_unused size_t implementation::latin1_length_from_utf8(
|
|
22
|
+
const char *src, size_t len) const noexcept {
|
|
23
|
+
return utf32_length_from_utf8(src, len);
|
|
24
|
+
}
|
|
25
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
26
|
+
|
|
27
|
+
#if SIMDUTF_FEATURE_UTF8 || SIMDUTF_FEATURE_UTF32
|
|
28
|
+
simdutf_warn_unused size_t implementation::utf32_length_from_utf8(
|
|
29
|
+
const char *src, size_t len) const noexcept {
|
|
30
|
+
size_t count = 0;
|
|
31
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
32
|
+
vl = __riscv_vsetvl_e8m8(len);
|
|
33
|
+
vint8m8_t v = __riscv_vle8_v_i8m8((int8_t *)src, vl);
|
|
34
|
+
vbool1_t mask = __riscv_vmsgt_vx_i8m8_b1(v, -65, vl);
|
|
35
|
+
count += __riscv_vcpop_m_b1(mask, vl);
|
|
36
|
+
}
|
|
37
|
+
return count;
|
|
38
|
+
}
|
|
39
|
+
#endif // SIMDUTF_FEATURE_UTF8 || SIMDUTF_FEATURE_UTF32
|
|
40
|
+
|
|
41
|
+
#if SIMDUTF_FEATURE_UTF16 || SIMDUTF_FEATURE_UTF32
|
|
42
|
+
template <simdutf_ByteFlip bflip>
|
|
43
|
+
simdutf_really_inline static size_t
|
|
44
|
+
rvv_utf32_length_from_utf16(const char16_t *src, size_t len) {
|
|
45
|
+
size_t count = 0;
|
|
46
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
47
|
+
vl = __riscv_vsetvl_e16m8(len);
|
|
48
|
+
vuint16m8_t v = __riscv_vle16_v_u16m8((uint16_t *)src, vl);
|
|
49
|
+
v = simdutf_byteflip<bflip>(v, vl);
|
|
50
|
+
vbool2_t notHigh =
|
|
51
|
+
__riscv_vmor_mm_b2(__riscv_vmsgtu_vx_u16m8_b2(v, 0xDFFF, vl),
|
|
52
|
+
__riscv_vmsltu_vx_u16m8_b2(v, 0xDC00, vl), vl);
|
|
53
|
+
count += __riscv_vcpop_m_b2(notHigh, vl);
|
|
54
|
+
}
|
|
55
|
+
return count;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
simdutf_warn_unused size_t implementation::utf32_length_from_utf16le(
|
|
59
|
+
const char16_t *src, size_t len) const noexcept {
|
|
60
|
+
return rvv_utf32_length_from_utf16<simdutf_ByteFlip::NONE>(src, len);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
simdutf_warn_unused size_t implementation::utf32_length_from_utf16be(
|
|
64
|
+
const char16_t *src, size_t len) const noexcept {
|
|
65
|
+
if (supports_zvbb())
|
|
66
|
+
return rvv_utf32_length_from_utf16<simdutf_ByteFlip::ZVBB>(src, len);
|
|
67
|
+
else
|
|
68
|
+
return rvv_utf32_length_from_utf16<simdutf_ByteFlip::V>(src, len);
|
|
69
|
+
}
|
|
70
|
+
#endif // SIMDUTF_FEATURE_UTF16 || SIMDUTF_FEATURE_UTF32
|
|
71
|
+
|
|
72
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
73
|
+
simdutf_warn_unused size_t implementation::utf8_length_from_latin1(
|
|
74
|
+
const char *src, size_t len) const noexcept {
|
|
75
|
+
size_t count = len;
|
|
76
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
77
|
+
vl = __riscv_vsetvl_e8m8(len);
|
|
78
|
+
vint8m8_t v = __riscv_vle8_v_i8m8((int8_t *)src, vl);
|
|
79
|
+
count += __riscv_vcpop_m_b1(__riscv_vmslt_vx_i8m8_b1(v, 0, vl), vl);
|
|
80
|
+
}
|
|
81
|
+
return count;
|
|
82
|
+
}
|
|
83
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
|
|
84
|
+
|
|
85
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
86
|
+
template <simdutf_ByteFlip bflip>
|
|
87
|
+
simdutf_really_inline static size_t
|
|
88
|
+
rvv_utf8_length_from_utf16(const char16_t *src, size_t len) {
|
|
89
|
+
size_t count = 0;
|
|
90
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
91
|
+
vl = __riscv_vsetvl_e16m8(len);
|
|
92
|
+
vuint16m8_t v = __riscv_vle16_v_u16m8((uint16_t *)src, vl);
|
|
93
|
+
v = simdutf_byteflip<bflip>(v, vl);
|
|
94
|
+
vbool2_t m234 = __riscv_vmsgtu_vx_u16m8_b2(v, 0x7F, vl);
|
|
95
|
+
vbool2_t m34 = __riscv_vmsgtu_vx_u16m8_b2(v, 0x7FF, vl);
|
|
96
|
+
vbool2_t notSur =
|
|
97
|
+
__riscv_vmor_mm_b2(__riscv_vmsltu_vx_u16m8_b2(v, 0xD800, vl),
|
|
98
|
+
__riscv_vmsgtu_vx_u16m8_b2(v, 0xDFFF, vl), vl);
|
|
99
|
+
vbool2_t m3 = __riscv_vmand_mm_b2(m34, notSur, vl);
|
|
100
|
+
count += vl + __riscv_vcpop_m_b2(m234, vl) + __riscv_vcpop_m_b2(m3, vl);
|
|
101
|
+
}
|
|
102
|
+
return count;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
simdutf_warn_unused size_t implementation::utf8_length_from_utf16le(
|
|
106
|
+
const char16_t *src, size_t len) const noexcept {
|
|
107
|
+
return rvv_utf8_length_from_utf16<simdutf_ByteFlip::NONE>(src, len);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
simdutf_warn_unused size_t implementation::utf8_length_from_utf16be(
|
|
111
|
+
const char16_t *src, size_t len) const noexcept {
|
|
112
|
+
if (supports_zvbb())
|
|
113
|
+
return rvv_utf8_length_from_utf16<simdutf_ByteFlip::ZVBB>(src, len);
|
|
114
|
+
else
|
|
115
|
+
return rvv_utf8_length_from_utf16<simdutf_ByteFlip::V>(src, len);
|
|
116
|
+
}
|
|
117
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
118
|
+
|
|
119
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
|
|
120
|
+
simdutf_warn_unused size_t implementation::utf8_length_from_utf32(
|
|
121
|
+
const char32_t *src, size_t len) const noexcept {
|
|
122
|
+
size_t count = 0;
|
|
123
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
124
|
+
vl = __riscv_vsetvl_e32m8(len);
|
|
125
|
+
vuint32m8_t v = __riscv_vle32_v_u32m8((uint32_t *)src, vl);
|
|
126
|
+
vbool4_t m234 = __riscv_vmsgtu_vx_u32m8_b4(v, 0x7F, vl);
|
|
127
|
+
vbool4_t m34 = __riscv_vmsgtu_vx_u32m8_b4(v, 0x7FF, vl);
|
|
128
|
+
vbool4_t m4 = __riscv_vmsgtu_vx_u32m8_b4(v, 0xFFFF, vl);
|
|
129
|
+
count += vl + __riscv_vcpop_m_b4(m234, vl) + __riscv_vcpop_m_b4(m34, vl) +
|
|
130
|
+
__riscv_vcpop_m_b4(m4, vl);
|
|
131
|
+
}
|
|
132
|
+
return count;
|
|
133
|
+
}
|
|
134
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
|
|
135
|
+
|
|
136
|
+
#if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
137
|
+
simdutf_warn_unused size_t implementation::utf16_length_from_utf8(
|
|
138
|
+
const char *src, size_t len) const noexcept {
|
|
139
|
+
size_t count = 0;
|
|
140
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
141
|
+
vl = __riscv_vsetvl_e8m8(len);
|
|
142
|
+
vint8m8_t v = __riscv_vle8_v_i8m8((int8_t *)src, vl);
|
|
143
|
+
vbool1_t m1234 = __riscv_vmsgt_vx_i8m8_b1(v, -65, vl);
|
|
144
|
+
vbool1_t m4 = __riscv_vmsgtu_vx_u8m8_b1(__riscv_vreinterpret_u8m8(v),
|
|
145
|
+
(uint8_t)0b11101111, vl);
|
|
146
|
+
count += __riscv_vcpop_m_b1(m1234, vl) + __riscv_vcpop_m_b1(m4, vl);
|
|
147
|
+
}
|
|
148
|
+
return count;
|
|
149
|
+
}
|
|
150
|
+
#endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
|
|
151
|
+
|
|
152
|
+
#if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
|
|
153
|
+
simdutf_warn_unused size_t implementation::utf16_length_from_utf32(
|
|
154
|
+
const char32_t *src, size_t len) const noexcept {
|
|
155
|
+
size_t count = 0;
|
|
156
|
+
for (size_t vl; len > 0; len -= vl, src += vl) {
|
|
157
|
+
vl = __riscv_vsetvl_e32m8(len);
|
|
158
|
+
vuint32m8_t v = __riscv_vle32_v_u32m8((uint32_t *)src, vl);
|
|
159
|
+
vbool4_t m4 = __riscv_vmsgtu_vx_u32m8_b4(v, 0xFFFF, vl);
|
|
160
|
+
count += vl + __riscv_vcpop_m_b4(m4, vl);
|
|
161
|
+
}
|
|
162
|
+
return count;
|
|
163
|
+
}
|
|
164
|
+
#endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
|