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,177 @@
|
|
|
1
|
+
#ifndef SIMDUTF_PPC64_SIMD_H
|
|
2
|
+
#define SIMDUTF_PPC64_SIMD_H
|
|
3
|
+
|
|
4
|
+
#include "simdutf.h"
|
|
5
|
+
#include "simdutf/ppc64/bitmanipulation.h"
|
|
6
|
+
#include <type_traits>
|
|
7
|
+
|
|
8
|
+
namespace simdutf {
|
|
9
|
+
namespace SIMDUTF_IMPLEMENTATION {
|
|
10
|
+
namespace {
|
|
11
|
+
namespace simd {
|
|
12
|
+
|
|
13
|
+
using vec_bool_t = __vector __bool char;
|
|
14
|
+
using vec_bool16_t = __vector __bool short;
|
|
15
|
+
using vec_bool32_t = __vector __bool int;
|
|
16
|
+
using vec_u8_t = __vector unsigned char;
|
|
17
|
+
using vec_i8_t = __vector signed char;
|
|
18
|
+
using vec_u16_t = __vector unsigned short;
|
|
19
|
+
using vec_i16_t = __vector signed short;
|
|
20
|
+
using vec_u32_t = __vector unsigned int;
|
|
21
|
+
using vec_i32_t = __vector signed int;
|
|
22
|
+
using vec_u64_t = __vector unsigned long long;
|
|
23
|
+
using vec_i64_t = __vector signed long long;
|
|
24
|
+
|
|
25
|
+
// clang-format off
|
|
26
|
+
template <typename T> struct vector_u8_type_for_element_aux {
|
|
27
|
+
using type = typename std::conditional<std::is_same<T, bool>::value, vec_bool_t,
|
|
28
|
+
typename std::conditional<std::is_same<T, uint8_t>::value, vec_u8_t,
|
|
29
|
+
typename std::conditional<std::is_same<T, int8_t>::value, vec_i8_t, void>::type>::type>::type;
|
|
30
|
+
|
|
31
|
+
static_assert(not std::is_same<type, void>::value,
|
|
32
|
+
"accepted element types are 8 bit integers or bool");
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
template <typename T> struct vector_u16_type_for_element_aux {
|
|
36
|
+
using type = typename std::conditional<std::is_same<T, bool>::value, vec_bool16_t,
|
|
37
|
+
typename std::conditional<std::is_same<T, uint16_t>::value, vec_u16_t,
|
|
38
|
+
typename std::conditional<std::is_same<T, int16_t>::value, vec_i16_t, void>::type>::type>::type;
|
|
39
|
+
|
|
40
|
+
static_assert(not std::is_same<type, void>::value,
|
|
41
|
+
"accepted element types are 16 bit integers or bool");
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template <typename T> struct vector_u32_type_for_element_aux {
|
|
45
|
+
using type = typename std::conditional<std::is_same<T, bool>::value, vec_bool32_t,
|
|
46
|
+
typename std::conditional<std::is_same<T, uint32_t>::value, vec_u32_t,
|
|
47
|
+
typename std::conditional<std::is_same<T, int32_t>::value, vec_i32_t, void>::type>::type>::type;
|
|
48
|
+
|
|
49
|
+
static_assert(not std::is_same<type, void>::value,
|
|
50
|
+
"accepted element types are 32 bit integers or bool");
|
|
51
|
+
};
|
|
52
|
+
// clang-format on
|
|
53
|
+
|
|
54
|
+
template <typename T>
|
|
55
|
+
using vector_u8_type_for_element =
|
|
56
|
+
typename vector_u8_type_for_element_aux<T>::type;
|
|
57
|
+
|
|
58
|
+
template <typename T>
|
|
59
|
+
using vector_u16_type_for_element =
|
|
60
|
+
typename vector_u16_type_for_element_aux<T>::type;
|
|
61
|
+
|
|
62
|
+
template <typename T>
|
|
63
|
+
using vector_u32_type_for_element =
|
|
64
|
+
typename vector_u32_type_for_element_aux<T>::type;
|
|
65
|
+
|
|
66
|
+
template <typename T> uint16_t move_mask_u8(T vec) {
|
|
67
|
+
const vec_u8_t perm_mask = {15 * 8, 14 * 8, 13 * 8, 12 * 8, 11 * 8, 10 * 8,
|
|
68
|
+
9 * 8, 8 * 8, 7 * 8, 6 * 8, 5 * 8, 4 * 8,
|
|
69
|
+
3 * 8, 2 * 8, 1 * 8, 0 * 8};
|
|
70
|
+
|
|
71
|
+
const auto result = (vec_u64_t)vec_vbpermq((vec_u8_t)vec, perm_mask);
|
|
72
|
+
#if SIMDUTF_IS_BIG_ENDIAN
|
|
73
|
+
return static_cast<uint16_t>(result[0]);
|
|
74
|
+
#else
|
|
75
|
+
return static_cast<uint16_t>(result[1]);
|
|
76
|
+
#endif
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#include "simdutf/ppc64/simd8-inl.h"
|
|
80
|
+
#include "simdutf/ppc64/simd16-inl.h"
|
|
81
|
+
#include "simdutf/ppc64/simd32-inl.h"
|
|
82
|
+
|
|
83
|
+
template <typename T>
|
|
84
|
+
simd8<T> select(const simd8<T> cond, const simd8<T> val_true,
|
|
85
|
+
const simd8<T> val_false) {
|
|
86
|
+
return vec_sel(val_false.value, val_true.value, cond.value);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
template <typename T>
|
|
90
|
+
simd8<T> select(const T cond, const simd8<T> val_true,
|
|
91
|
+
const simd8<T> val_false) {
|
|
92
|
+
return vec_sel(val_false.value, val_true.value, vec_splats(cond));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
template <typename T>
|
|
96
|
+
simd16<T> select(const simd16<T> cond, const simd16<T> val_true,
|
|
97
|
+
const simd16<T> val_false) {
|
|
98
|
+
return vec_sel(val_false.value, val_true.value, cond.value);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
template <typename T>
|
|
102
|
+
simd16<T> select(const T cond, const simd16<T> val_true,
|
|
103
|
+
const simd16<T> val_false) {
|
|
104
|
+
return vec_sel(val_false.value, val_true.value, vec_splats(cond));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
template <typename T>
|
|
108
|
+
simd32<T> select(const simd32<T> cond, const simd32<T> val_true,
|
|
109
|
+
const simd32<T> val_false) {
|
|
110
|
+
return vec_sel(val_false.value, val_true.value, cond.value);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
template <typename T>
|
|
114
|
+
simd32<T> select(const T cond, const simd32<T> val_true,
|
|
115
|
+
const simd32<T> val_false) {
|
|
116
|
+
return vec_sel(val_false.value, val_true.value, vec_splats(cond));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
using vector_u8 = simd8<uint8_t>;
|
|
120
|
+
using vector_u16 = simd16<uint16_t>;
|
|
121
|
+
using vector_u32 = simd32<uint32_t>;
|
|
122
|
+
using vector_i8 = simd8<int8_t>;
|
|
123
|
+
|
|
124
|
+
simdutf_really_inline vector_u8 as_vector_u8(const vector_u16 v) {
|
|
125
|
+
return vector_u8::vector_type(v.value);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
simdutf_really_inline vector_u8 as_vector_u8(const vector_u32 v) {
|
|
129
|
+
return vector_u8::vector_type(v.value);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
simdutf_really_inline vector_u8 as_vector_u8(const vector_i8 v) {
|
|
133
|
+
return vector_u8::vector_type(v.value);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
simdutf_really_inline vector_u8 as_vector_u8(const simd16<bool> v) {
|
|
137
|
+
return vector_u8::vector_type(v.value);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
simdutf_really_inline vector_i8 as_vector_i8(const vector_u8 v) {
|
|
141
|
+
return vector_i8::vector_type(v.value);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
simdutf_really_inline vector_u16 as_vector_u16(const vector_u8 v) {
|
|
145
|
+
return vector_u16::vector_type(v.value);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
simdutf_really_inline vector_u16 as_vector_u16(const simd16<bool> v) {
|
|
149
|
+
return vector_u16::vector_type(v.value);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
simdutf_really_inline vector_u32 as_vector_u32(const vector_u8 v) {
|
|
153
|
+
return vector_u32::vector_type(v.value);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
simdutf_really_inline vector_u32 as_vector_u32(const vector_u16 v) {
|
|
157
|
+
return vector_u32::vector_type(v.value);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
simdutf_really_inline vector_u32 max(vector_u32 a, vector_u32 b) {
|
|
161
|
+
return vec_max(a.value, b.value);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
simdutf_really_inline vector_u32 max(vector_u32 a, vector_u32 b, vector_u32 c) {
|
|
165
|
+
return max(max(a, b), c);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
simdutf_really_inline vector_u32 sum4bytes(vector_u8 bytes, vector_u32 acc) {
|
|
169
|
+
return vec_sum4s(bytes.value, acc.value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
} // namespace simd
|
|
173
|
+
} // unnamed namespace
|
|
174
|
+
} // namespace SIMDUTF_IMPLEMENTATION
|
|
175
|
+
} // namespace simdutf
|
|
176
|
+
|
|
177
|
+
#endif // SIMDUTF_PPC64_SIMD_INPUT_H
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
// file included directly
|
|
2
|
+
|
|
3
|
+
template <typename T> struct simd16;
|
|
4
|
+
|
|
5
|
+
template <typename T> struct base16 {
|
|
6
|
+
using vector_type = vector_u16_type_for_element<T>;
|
|
7
|
+
static const int SIZE = sizeof(vector_type);
|
|
8
|
+
static const int ELEMENTS = sizeof(vector_type) / sizeof(T);
|
|
9
|
+
|
|
10
|
+
vector_type value;
|
|
11
|
+
|
|
12
|
+
// Zero constructor
|
|
13
|
+
simdutf_really_inline base16() : value{vector_type()} {}
|
|
14
|
+
|
|
15
|
+
// Conversion from SIMD register
|
|
16
|
+
simdutf_really_inline base16(const vector_type _value) : value{_value} {}
|
|
17
|
+
void dump() const {
|
|
18
|
+
#ifdef SIMDUTF_LOGGING
|
|
19
|
+
uint16_t tmp[8];
|
|
20
|
+
vec_xst(value, 0, reinterpret_cast<vector_type *>(tmp));
|
|
21
|
+
for (int i = 0; i < 8; i++) {
|
|
22
|
+
if (i == 0) {
|
|
23
|
+
printf("[%04x", tmp[i]);
|
|
24
|
+
} else if (i == 8 - 1) {
|
|
25
|
+
printf(" %04x]", tmp[i]);
|
|
26
|
+
} else {
|
|
27
|
+
printf(" %04x", tmp[i]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
putchar('\n');
|
|
31
|
+
#endif // SIMDUTF_LOGGING
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Forward declaration
|
|
36
|
+
template <typename> struct simd16;
|
|
37
|
+
|
|
38
|
+
template <typename T>
|
|
39
|
+
simd16<bool> operator==(const simd16<T> a, const simd16<T> b);
|
|
40
|
+
|
|
41
|
+
template <typename T, typename U>
|
|
42
|
+
simd16<bool> operator==(const simd16<T> a, U b);
|
|
43
|
+
|
|
44
|
+
template <typename T> simd16<T> operator&(const simd16<T> a, const simd16<T> b);
|
|
45
|
+
|
|
46
|
+
template <typename T> simd16<T> operator|(const simd16<T> a, const simd16<T> b);
|
|
47
|
+
|
|
48
|
+
template <typename T, typename U> simd16<T> operator|(const simd16<T> a, U b);
|
|
49
|
+
|
|
50
|
+
template <typename T, typename U> simd16<T> operator^(const simd16<T> a, U b);
|
|
51
|
+
|
|
52
|
+
// SIMD byte mask type (returned by things like eq and gt)
|
|
53
|
+
template <> struct simd16<bool> : base16<bool> {
|
|
54
|
+
static simdutf_really_inline simd16<bool> splat(bool _value) {
|
|
55
|
+
return (vector_type)vec_splats(uint16_t(-(!!_value)));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
simdutf_really_inline simd16() : base16() {}
|
|
59
|
+
|
|
60
|
+
simdutf_really_inline simd16(const vector_type _value)
|
|
61
|
+
: base16<bool>(_value) {}
|
|
62
|
+
|
|
63
|
+
// Splat constructor
|
|
64
|
+
simdutf_really_inline simd16(bool _value) : base16<bool>(splat(_value)) {}
|
|
65
|
+
|
|
66
|
+
simdutf_really_inline uint16_t to_bitmask() const {
|
|
67
|
+
return move_mask_u8(value);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
simdutf_really_inline bool any() const {
|
|
71
|
+
const auto tmp = vec_u64_t(value);
|
|
72
|
+
|
|
73
|
+
return tmp[0] || tmp[1]; // Note: logical or, not binary one
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
simdutf_really_inline bool is_zero() const {
|
|
77
|
+
const auto tmp = vec_u64_t(value);
|
|
78
|
+
|
|
79
|
+
return (tmp[0] | tmp[1]) == 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
simdutf_really_inline simd16<bool> &operator|=(const simd16<bool> rhs) {
|
|
83
|
+
value = vec_or(this->value, rhs.value);
|
|
84
|
+
return *this;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
template <typename T> struct base16_numeric : base16<T> {
|
|
89
|
+
using vector_type = typename base16<T>::vector_type;
|
|
90
|
+
|
|
91
|
+
static simdutf_really_inline simd16<T> splat(T _value) {
|
|
92
|
+
return vec_splats(_value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
static simdutf_really_inline simd16<T> zero() { return splat(0); }
|
|
96
|
+
|
|
97
|
+
template <typename U>
|
|
98
|
+
static simdutf_really_inline simd16<T> load(const U *ptr) {
|
|
99
|
+
return vec_xl(0, reinterpret_cast<const T *>(ptr));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
simdutf_really_inline base16_numeric() : base16<T>() {}
|
|
103
|
+
simdutf_really_inline base16_numeric(const vector_type _value)
|
|
104
|
+
: base16<T>(_value) {}
|
|
105
|
+
|
|
106
|
+
// Store to array
|
|
107
|
+
template <typename U> simdutf_really_inline void store(U *dst) const {
|
|
108
|
+
#if defined(__clang__)
|
|
109
|
+
return vec_xst(this->value, 0, reinterpret_cast<T *>(dst));
|
|
110
|
+
#else
|
|
111
|
+
return vec_xst(this->value, 0, reinterpret_cast<vector_type *>(dst));
|
|
112
|
+
#endif // defined(__clang__)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Override to distinguish from bool version
|
|
116
|
+
simdutf_really_inline simd16<T> operator~() const {
|
|
117
|
+
return vec_xor(this->value, vec_splats(T(0xffff)));
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// Signed code units
|
|
122
|
+
template <> struct simd16<int16_t> : base16_numeric<int16_t> {
|
|
123
|
+
simdutf_really_inline simd16() : base16_numeric<int16_t>() {}
|
|
124
|
+
simdutf_really_inline simd16(const vector_type _value)
|
|
125
|
+
: base16_numeric<int16_t>(_value) {}
|
|
126
|
+
// Splat constructor
|
|
127
|
+
simdutf_really_inline simd16(int16_t _value) : simd16(splat(_value)) {}
|
|
128
|
+
// Array constructor
|
|
129
|
+
simdutf_really_inline operator simd16<uint16_t>() const;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// Unsigned code units
|
|
133
|
+
template <> struct simd16<uint16_t> : base16_numeric<uint16_t> {
|
|
134
|
+
simdutf_really_inline simd16() : base16_numeric<uint16_t>() {}
|
|
135
|
+
simdutf_really_inline simd16(const vector_type _value)
|
|
136
|
+
: base16_numeric<uint16_t>(_value) {}
|
|
137
|
+
|
|
138
|
+
// Splat constructor
|
|
139
|
+
simdutf_really_inline simd16(uint16_t _value) : simd16(splat(_value)) {}
|
|
140
|
+
|
|
141
|
+
// Array constructor
|
|
142
|
+
simdutf_really_inline simd16(const char16_t *values)
|
|
143
|
+
: simd16(load(reinterpret_cast<const uint16_t *>(values))) {}
|
|
144
|
+
|
|
145
|
+
simdutf_really_inline bool is_ascii() const {
|
|
146
|
+
return vec_all_lt(value, vec_splats(uint16_t(128)));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Order-specific operations
|
|
150
|
+
simdutf_really_inline simd16<uint16_t>
|
|
151
|
+
max_val(const simd16<uint16_t> other) const {
|
|
152
|
+
return vec_max(this->value, other.value);
|
|
153
|
+
}
|
|
154
|
+
simdutf_really_inline simd16<uint16_t>
|
|
155
|
+
min_val(const simd16<uint16_t> other) const {
|
|
156
|
+
return vec_min(this->value, other.value);
|
|
157
|
+
}
|
|
158
|
+
// Same as <, but only guarantees true is nonzero (< guarantees true = -1)
|
|
159
|
+
simdutf_really_inline simd16<bool>
|
|
160
|
+
operator<=(const simd16<uint16_t> other) const {
|
|
161
|
+
return other.max_val(*this) == other;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
simdutf_really_inline simd16<bool>
|
|
165
|
+
operator>=(const simd16<uint16_t> other) const {
|
|
166
|
+
return other.min_val(*this) == other;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
simdutf_really_inline simd16<bool>
|
|
170
|
+
operator<(const simd16<uint16_t> other) const {
|
|
171
|
+
return vec_cmplt(value, other.value);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Bit-specific operations
|
|
175
|
+
template <int N> simdutf_really_inline simd16<uint16_t> shr() const {
|
|
176
|
+
return vec_sr(value, vec_splats(uint16_t(N)));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
template <int N> simdutf_really_inline simd16<uint16_t> shl() const {
|
|
180
|
+
return vec_sl(value, vec_splats(uint16_t(N)));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Change the endianness
|
|
184
|
+
simdutf_really_inline simd16<uint16_t> swap_bytes() const {
|
|
185
|
+
return vec_revb(value);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Pack with the unsigned saturation of two uint16_t code units into single
|
|
189
|
+
// uint8_t vector
|
|
190
|
+
static simdutf_really_inline simd8<uint8_t> pack(const simd16<uint16_t> &v0,
|
|
191
|
+
const simd16<uint16_t> &v1) {
|
|
192
|
+
return vec_packs(v0.value, v1.value);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
template <typename T>
|
|
197
|
+
simd16<bool> operator==(const simd16<T> a, const simd16<T> b) {
|
|
198
|
+
return vec_cmpeq(a.value, b.value);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
template <typename T, typename U>
|
|
202
|
+
simd16<bool> operator==(const simd16<T> a, U b) {
|
|
203
|
+
return vec_cmpeq(a.value, vec_splats(T(b)));
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
template <typename T>
|
|
207
|
+
simd16<T> operator&(const simd16<T> a, const simd16<T> b) {
|
|
208
|
+
return vec_and(a.value, b.value);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
template <typename T, typename U> simd16<T> operator&(const simd16<T> a, U b) {
|
|
212
|
+
return vec_and(a.value, vec_splats(T(b)));
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
template <typename T>
|
|
216
|
+
simd16<T> operator|(const simd16<T> a, const simd16<T> b) {
|
|
217
|
+
return vec_or(a.value, b.value);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
template <typename T, typename U> simd16<T> operator|(const simd16<T> a, U b) {
|
|
221
|
+
return vec_or(a.value, vec_splats(T(b)));
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
template <typename T>
|
|
225
|
+
simd16<T> operator^(const simd16<T> a, const simd16<T> b) {
|
|
226
|
+
return vec_xor(a.value, b.value);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
template <typename T, typename U> simd16<T> operator^(const simd16<T> a, U b) {
|
|
230
|
+
return vec_xor(a.value, vec_splats(T(b)));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
simdutf_really_inline simd16<int16_t>::operator simd16<uint16_t>() const {
|
|
234
|
+
return (vec_u16_t)(value);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
template <typename T> struct simd16x32 {
|
|
238
|
+
static constexpr int NUM_CHUNKS = 64 / sizeof(simd16<T>);
|
|
239
|
+
static_assert(NUM_CHUNKS == 4,
|
|
240
|
+
"AltiVec kernel should use four registers per 64-byte block.");
|
|
241
|
+
simd16<T> chunks[NUM_CHUNKS];
|
|
242
|
+
|
|
243
|
+
simd16x32(const simd16x32<T> &o) = delete; // no copy allowed
|
|
244
|
+
simd16x32<T> &
|
|
245
|
+
operator=(const simd16<T> other) = delete; // no assignment allowed
|
|
246
|
+
simd16x32() = delete; // no default constructor allowed
|
|
247
|
+
|
|
248
|
+
simdutf_really_inline
|
|
249
|
+
simd16x32(const simd16<T> chunk0, const simd16<T> chunk1,
|
|
250
|
+
const simd16<T> chunk2, const simd16<T> chunk3)
|
|
251
|
+
: chunks{chunk0, chunk1, chunk2, chunk3} {}
|
|
252
|
+
simdutf_really_inline simd16x32(const T *ptr)
|
|
253
|
+
: chunks{simd16<T>::load(ptr),
|
|
254
|
+
simd16<T>::load(ptr + sizeof(simd16<T>) / sizeof(T)),
|
|
255
|
+
simd16<T>::load(ptr + 2 * sizeof(simd16<T>) / sizeof(T)),
|
|
256
|
+
simd16<T>::load(ptr + 3 * sizeof(simd16<T>) / sizeof(T))} {}
|
|
257
|
+
|
|
258
|
+
simdutf_really_inline void store(T *ptr) const {
|
|
259
|
+
this->chunks[0].store(ptr + sizeof(simd16<T>) * 0 / sizeof(T));
|
|
260
|
+
this->chunks[1].store(ptr + sizeof(simd16<T>) * 1 / sizeof(T));
|
|
261
|
+
this->chunks[2].store(ptr + sizeof(simd16<T>) * 2 / sizeof(T));
|
|
262
|
+
this->chunks[3].store(ptr + sizeof(simd16<T>) * 3 / sizeof(T));
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
simdutf_really_inline simd16<T> reduce_or() const {
|
|
266
|
+
return (this->chunks[0] | this->chunks[1]) |
|
|
267
|
+
(this->chunks[2] | this->chunks[3]);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
simdutf_really_inline bool is_ascii() const {
|
|
271
|
+
return this->reduce_or().is_ascii();
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
|
|
275
|
+
this->chunks[0].store_ascii_as_utf16(ptr + sizeof(simd16<T>) * 0);
|
|
276
|
+
this->chunks[1].store_ascii_as_utf16(ptr + sizeof(simd16<T>) * 1);
|
|
277
|
+
this->chunks[2].store_ascii_as_utf16(ptr + sizeof(simd16<T>) * 2);
|
|
278
|
+
this->chunks[3].store_ascii_as_utf16(ptr + sizeof(simd16<T>) * 3);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
simdutf_really_inline uint64_t to_bitmask() const {
|
|
282
|
+
uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
|
|
283
|
+
uint64_t r1 = this->chunks[1].to_bitmask();
|
|
284
|
+
uint64_t r2 = this->chunks[2].to_bitmask();
|
|
285
|
+
uint64_t r3 = this->chunks[3].to_bitmask();
|
|
286
|
+
return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
simdutf_really_inline void swap_bytes() {
|
|
290
|
+
this->chunks[0] = this->chunks[0].swap_bytes();
|
|
291
|
+
this->chunks[1] = this->chunks[1].swap_bytes();
|
|
292
|
+
this->chunks[2] = this->chunks[2].swap_bytes();
|
|
293
|
+
this->chunks[3] = this->chunks[3].swap_bytes();
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
simdutf_really_inline uint64_t gt(const T m) const {
|
|
297
|
+
const simd16<T> mask = simd16<T>::splat(m);
|
|
298
|
+
return simd16x32<bool>(this->chunks[0] > mask, this->chunks[1] > mask,
|
|
299
|
+
this->chunks[2] > mask, this->chunks[3] > mask)
|
|
300
|
+
.to_bitmask();
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
simdutf_really_inline uint64_t lteq(const T m) const {
|
|
304
|
+
const simd16<T> mask = simd16<T>::splat(m);
|
|
305
|
+
return simd16x32<bool>(this->chunks[0] <= mask, this->chunks[1] <= mask,
|
|
306
|
+
this->chunks[2] <= mask, this->chunks[3] <= mask)
|
|
307
|
+
.to_bitmask();
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
simdutf_really_inline uint64_t eq(const T m) const {
|
|
311
|
+
const simd16<T> mask = simd16<T>::splat(m);
|
|
312
|
+
return simd16x32<bool>(this->chunks[0] == mask, this->chunks[1] == mask,
|
|
313
|
+
this->chunks[2] == mask, this->chunks[3] == mask)
|
|
314
|
+
.to_bitmask();
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
simdutf_really_inline uint64_t not_in_range(const T low, const T high) const {
|
|
318
|
+
const simd16<T> mask_low = simd16<T>::splat(static_cast<T>(low - 1));
|
|
319
|
+
const simd16<T> mask_high = simd16<T>::splat(static_cast<T>(high + 1));
|
|
320
|
+
return simd16x32<bool>(
|
|
321
|
+
(this->chunks[0] >= mask_high) | (this->chunks[0] <= mask_low),
|
|
322
|
+
(this->chunks[1] >= mask_high) | (this->chunks[1] <= mask_low),
|
|
323
|
+
(this->chunks[2] >= mask_high) | (this->chunks[2] <= mask_low),
|
|
324
|
+
(this->chunks[3] >= mask_high) | (this->chunks[3] <= mask_low))
|
|
325
|
+
.to_bitmask();
|
|
326
|
+
}
|
|
327
|
+
}; // struct simd16x32<T>
|