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.
Files changed (561) hide show
  1. package/QuickCrypto.podspec +12 -38
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +3 -0
  4. package/android/build.gradle +5 -1
  5. package/cpp/argon2/HybridArgon2.cpp +10 -3
  6. package/cpp/blake3/HybridBlake3.cpp +5 -3
  7. package/cpp/cipher/CCMCipher.cpp +29 -16
  8. package/cpp/cipher/CCMCipher.hpp +2 -4
  9. package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
  10. package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
  11. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
  12. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
  13. package/cpp/cipher/GCMCipher.cpp +14 -15
  14. package/cpp/cipher/HybridCipher.cpp +39 -36
  15. package/cpp/cipher/HybridCipher.hpp +17 -1
  16. package/cpp/cipher/HybridRsaCipher.cpp +74 -29
  17. package/cpp/cipher/OCBCipher.cpp +4 -3
  18. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
  19. package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
  20. package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
  21. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
  22. package/cpp/dh/HybridDiffieHellman.cpp +29 -0
  23. package/cpp/ec/HybridEcKeyPair.cpp +35 -33
  24. package/cpp/ec/HybridEcKeyPair.hpp +3 -7
  25. package/cpp/ecdh/HybridECDH.cpp +23 -0
  26. package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
  27. package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
  28. package/cpp/hash/HybridHash.cpp +5 -7
  29. package/cpp/hkdf/HybridHkdf.cpp +6 -4
  30. package/cpp/hmac/HybridHmac.cpp +4 -6
  31. package/cpp/kmac/HybridKmac.cpp +4 -4
  32. package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
  33. package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
  34. package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
  35. package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
  36. package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
  37. package/cpp/scrypt/HybridScrypt.cpp +6 -4
  38. package/cpp/sign/HybridSignHandle.cpp +25 -68
  39. package/cpp/sign/HybridVerifyHandle.cpp +23 -60
  40. package/cpp/utils/HybridUtils.cpp +213 -111
  41. package/cpp/utils/HybridUtils.hpp +9 -2
  42. package/cpp/utils/QuickCryptoUtils.hpp +72 -0
  43. package/deps/simdutf/LICENSE-APACHE +201 -0
  44. package/deps/simdutf/LICENSE-MIT +18 -0
  45. package/deps/simdutf/README.md +2782 -0
  46. package/deps/simdutf/include/simdutf/avx512.h +79 -0
  47. package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  48. package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  49. package/deps/simdutf/include/simdutf/common_defs.h +186 -0
  50. package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  51. package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  52. package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  53. package/deps/simdutf/include/simdutf/error.h +126 -0
  54. package/deps/simdutf/include/simdutf/implementation.h +7081 -0
  55. package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  56. package/deps/simdutf/include/simdutf/portability.h +285 -0
  57. package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  58. package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  59. package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  60. package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  61. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  62. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  63. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  64. package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  65. package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  66. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  67. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  68. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  69. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  70. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  71. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  72. package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  73. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  74. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  75. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  76. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  77. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  78. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  79. package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  80. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  81. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  82. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  83. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  84. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  85. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  86. package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  87. package/deps/simdutf/include/simdutf.h +26 -0
  88. package/deps/simdutf/include/simdutf_c.h +342 -0
  89. package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  90. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  91. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  92. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  93. package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  94. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  95. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  96. package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  97. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  98. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  99. package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  100. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  101. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  102. package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  103. package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  104. package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  105. package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  106. package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  107. package/deps/simdutf/src/encoding_types.cpp +67 -0
  108. package/deps/simdutf/src/error.cpp +3 -0
  109. package/deps/simdutf/src/fallback/implementation.cpp +589 -0
  110. package/deps/simdutf/src/generic/ascii_validation.h +50 -0
  111. package/deps/simdutf/src/generic/base64.h +233 -0
  112. package/deps/simdutf/src/generic/base64lengths.h +63 -0
  113. package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  114. package/deps/simdutf/src/generic/find.h +75 -0
  115. package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  116. package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  117. package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  118. package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  119. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  120. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  121. package/deps/simdutf/src/generic/utf16.h +73 -0
  122. package/deps/simdutf/src/generic/utf32.h +136 -0
  123. package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  124. package/deps/simdutf/src/generic/utf8.h +92 -0
  125. package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  126. package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  127. package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  128. package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  129. package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  130. package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  131. package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  132. package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  133. package/deps/simdutf/src/generic/validate_utf16.h +164 -0
  134. package/deps/simdutf/src/generic/validate_utf32.h +99 -0
  135. package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  136. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  137. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  138. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  139. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  140. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  141. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  142. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  143. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  144. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  145. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  146. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  147. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  148. package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  149. package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  150. package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  151. package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  152. package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  153. package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  154. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  155. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  156. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  157. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  158. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  159. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  160. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  161. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  162. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  163. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  164. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  165. package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  166. package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  167. package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  168. package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  169. package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  170. package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  171. package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  172. package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  173. package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  174. package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  175. package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  176. package/deps/simdutf/src/implementation.cpp +2526 -0
  177. package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  178. package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  179. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  180. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  181. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  182. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  183. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  184. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  185. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  186. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  187. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  188. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  189. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  190. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  191. package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  192. package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  193. package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  194. package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  195. package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  196. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  197. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  198. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  199. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  200. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  201. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  202. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  203. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  204. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  205. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  206. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  207. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  208. package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  209. package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  210. package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  211. package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  212. package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  213. package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  214. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  215. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  216. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  217. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  218. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  219. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  220. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  221. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  222. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  223. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  224. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  225. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  226. package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  227. package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  228. package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  229. package/deps/simdutf/src/ppc64/templates.cpp +91 -0
  230. package/deps/simdutf/src/rvv/implementation.cpp +138 -0
  231. package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  232. package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  233. package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  234. package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  235. package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  236. package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  237. package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  238. package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  239. package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  240. package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  241. package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  242. package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  243. package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  244. package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  245. package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  246. package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  247. package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  248. package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  249. package/deps/simdutf/src/simdutf/arm64.h +43 -0
  250. package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  251. package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  252. package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  253. package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  254. package/deps/simdutf/src/simdutf/fallback.h +42 -0
  255. package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  256. package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  257. package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  258. package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  259. package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  260. package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  261. package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  262. package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  263. package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  264. package/deps/simdutf/src/simdutf/haswell.h +63 -0
  265. package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  266. package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  267. package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  268. package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  269. package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  270. package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  271. package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  272. package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  273. package/deps/simdutf/src/simdutf/icelake.h +81 -0
  274. package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  275. package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  276. package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  277. package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  278. package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  279. package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  280. package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  281. package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  282. package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  283. package/deps/simdutf/src/simdutf/lasx.h +49 -0
  284. package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  285. package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  286. package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  287. package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  288. package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  289. package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  290. package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  291. package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  292. package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  293. package/deps/simdutf/src/simdutf/lsx.h +52 -0
  294. package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  295. package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  296. package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  297. package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  298. package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  299. package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  300. package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  301. package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  302. package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  303. package/deps/simdutf/src/simdutf/ppc64.h +40 -0
  304. package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  305. package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  306. package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  307. package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  308. package/deps/simdutf/src/simdutf/rvv.h +41 -0
  309. package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  310. package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  311. package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  312. package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  313. package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  314. package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  315. package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  316. package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  317. package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  318. package/deps/simdutf/src/simdutf/westmere.h +59 -0
  319. package/deps/simdutf/src/simdutf.cpp +152 -0
  320. package/deps/simdutf/src/simdutf_c.cpp +525 -0
  321. package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  322. package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  323. package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  324. package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  325. package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  326. package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  327. package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  328. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  329. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  330. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  331. package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  332. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  333. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  334. package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  335. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  336. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  337. package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  338. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  339. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  340. package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  341. package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  342. package/lib/commonjs/argon2.js +51 -2
  343. package/lib/commonjs/argon2.js.map +1 -1
  344. package/lib/commonjs/cipher.js +109 -11
  345. package/lib/commonjs/cipher.js.map +1 -1
  346. package/lib/commonjs/dsa.js +8 -2
  347. package/lib/commonjs/dsa.js.map +1 -1
  348. package/lib/commonjs/hash.js +15 -5
  349. package/lib/commonjs/hash.js.map +1 -1
  350. package/lib/commonjs/hkdf.js +33 -6
  351. package/lib/commonjs/hkdf.js.map +1 -1
  352. package/lib/commonjs/hmac.js +15 -5
  353. package/lib/commonjs/hmac.js.map +1 -1
  354. package/lib/commonjs/keys/publicCipher.js +10 -4
  355. package/lib/commonjs/keys/publicCipher.js.map +1 -1
  356. package/lib/commonjs/random.js +11 -2
  357. package/lib/commonjs/random.js.map +1 -1
  358. package/lib/commonjs/rsa.js +12 -5
  359. package/lib/commonjs/rsa.js.map +1 -1
  360. package/lib/commonjs/scrypt.js +47 -6
  361. package/lib/commonjs/scrypt.js.map +1 -1
  362. package/lib/commonjs/subtle.js +76 -5
  363. package/lib/commonjs/subtle.js.map +1 -1
  364. package/lib/commonjs/utils/cipher.js +18 -7
  365. package/lib/commonjs/utils/cipher.js.map +1 -1
  366. package/lib/commonjs/utils/conversion.js +33 -9
  367. package/lib/commonjs/utils/conversion.js.map +1 -1
  368. package/lib/commonjs/utils/timingSafeEqual.js +7 -2
  369. package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
  370. package/lib/commonjs/x509certificate.js +6 -6
  371. package/lib/commonjs/x509certificate.js.map +1 -1
  372. package/lib/module/argon2.js +51 -2
  373. package/lib/module/argon2.js.map +1 -1
  374. package/lib/module/cipher.js +109 -11
  375. package/lib/module/cipher.js.map +1 -1
  376. package/lib/module/dsa.js +8 -2
  377. package/lib/module/dsa.js.map +1 -1
  378. package/lib/module/hash.js +15 -5
  379. package/lib/module/hash.js.map +1 -1
  380. package/lib/module/hkdf.js +33 -6
  381. package/lib/module/hkdf.js.map +1 -1
  382. package/lib/module/hmac.js +15 -5
  383. package/lib/module/hmac.js.map +1 -1
  384. package/lib/module/keys/publicCipher.js +10 -4
  385. package/lib/module/keys/publicCipher.js.map +1 -1
  386. package/lib/module/random.js +11 -2
  387. package/lib/module/random.js.map +1 -1
  388. package/lib/module/rsa.js +11 -4
  389. package/lib/module/rsa.js.map +1 -1
  390. package/lib/module/scrypt.js +47 -6
  391. package/lib/module/scrypt.js.map +1 -1
  392. package/lib/module/subtle.js +76 -5
  393. package/lib/module/subtle.js.map +1 -1
  394. package/lib/module/utils/cipher.js +18 -7
  395. package/lib/module/utils/cipher.js.map +1 -1
  396. package/lib/module/utils/conversion.js +33 -9
  397. package/lib/module/utils/conversion.js.map +1 -1
  398. package/lib/module/utils/timingSafeEqual.js +8 -3
  399. package/lib/module/utils/timingSafeEqual.js.map +1 -1
  400. package/lib/module/x509certificate.js +6 -6
  401. package/lib/module/x509certificate.js.map +1 -1
  402. package/lib/typescript/argon2.d.ts.map +1 -1
  403. package/lib/typescript/cipher.d.ts +2 -2
  404. package/lib/typescript/cipher.d.ts.map +1 -1
  405. package/lib/typescript/dsa.d.ts.map +1 -1
  406. package/lib/typescript/hash.d.ts +2 -2
  407. package/lib/typescript/hash.d.ts.map +1 -1
  408. package/lib/typescript/hkdf.d.ts.map +1 -1
  409. package/lib/typescript/hmac.d.ts +2 -2
  410. package/lib/typescript/hmac.d.ts.map +1 -1
  411. package/lib/typescript/index.d.ts +1 -1
  412. package/lib/typescript/index.d.ts.map +1 -1
  413. package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
  414. package/lib/typescript/random.d.ts.map +1 -1
  415. package/lib/typescript/rsa.d.ts.map +1 -1
  416. package/lib/typescript/scrypt.d.ts.map +1 -1
  417. package/lib/typescript/specs/utils.nitro.d.ts +0 -2
  418. package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
  419. package/lib/typescript/subtle.d.ts.map +1 -1
  420. package/lib/typescript/utils/cipher.d.ts +13 -1
  421. package/lib/typescript/utils/cipher.d.ts.map +1 -1
  422. package/lib/typescript/utils/conversion.d.ts +9 -6
  423. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  424. package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
  425. package/lib/typescript/x509certificate.d.ts.map +1 -1
  426. package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
  427. package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
  428. package/package.json +38 -6
  429. package/src/argon2.ts +80 -2
  430. package/src/cipher.ts +139 -15
  431. package/src/dsa.ts +11 -2
  432. package/src/hash.ts +17 -7
  433. package/src/hkdf.ts +44 -6
  434. package/src/hmac.ts +17 -7
  435. package/src/keys/publicCipher.ts +10 -4
  436. package/src/random.ts +11 -2
  437. package/src/rsa.ts +18 -4
  438. package/src/scrypt.ts +73 -6
  439. package/src/specs/utils.nitro.ts +0 -2
  440. package/src/subtle.ts +90 -8
  441. package/src/utils/cipher.ts +30 -8
  442. package/src/utils/conversion.ts +58 -20
  443. package/src/utils/timingSafeEqual.ts +8 -3
  444. package/src/x509certificate.ts +5 -6
  445. package/deps/blake3/.cargo/config.toml +0 -2
  446. package/deps/blake3/.git-blame-ignore-revs +0 -2
  447. package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
  448. package/deps/blake3/.github/workflows/ci.yml +0 -491
  449. package/deps/blake3/.github/workflows/tag.yml +0 -43
  450. package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
  451. package/deps/blake3/CONTRIBUTING.md +0 -31
  452. package/deps/blake3/Cargo.toml +0 -135
  453. package/deps/blake3/b3sum/Cargo.lock +0 -513
  454. package/deps/blake3/b3sum/Cargo.toml +0 -26
  455. package/deps/blake3/b3sum/README.md +0 -72
  456. package/deps/blake3/b3sum/src/main.rs +0 -564
  457. package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
  458. package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
  459. package/deps/blake3/b3sum/what_does_check_do.md +0 -176
  460. package/deps/blake3/benches/bench.rs +0 -623
  461. package/deps/blake3/build.rs +0 -389
  462. package/deps/blake3/c/CMakeLists.txt +0 -383
  463. package/deps/blake3/c/CMakePresets.json +0 -73
  464. package/deps/blake3/c/Makefile.testing +0 -82
  465. package/deps/blake3/c/blake3-config.cmake.in +0 -14
  466. package/deps/blake3/c/blake3_avx2.c +0 -326
  467. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
  468. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
  469. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
  470. package/deps/blake3/c/blake3_avx512.c +0 -1388
  471. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
  472. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
  473. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
  474. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
  475. package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
  476. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
  477. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
  478. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
  479. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
  480. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
  481. package/deps/blake3/c/blake3_sse2.c +0 -566
  482. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
  483. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
  484. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
  485. package/deps/blake3/c/blake3_sse41.c +0 -560
  486. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
  487. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
  488. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
  489. package/deps/blake3/c/blake3_tbb.cpp +0 -37
  490. package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
  491. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
  492. package/deps/blake3/c/example.c +0 -36
  493. package/deps/blake3/c/example_tbb.c +0 -57
  494. package/deps/blake3/c/libblake3.pc.in +0 -12
  495. package/deps/blake3/c/main.c +0 -166
  496. package/deps/blake3/c/test.py +0 -97
  497. package/deps/blake3/media/B3.svg +0 -70
  498. package/deps/blake3/media/BLAKE3.svg +0 -85
  499. package/deps/blake3/media/speed.svg +0 -1474
  500. package/deps/blake3/reference_impl/Cargo.toml +0 -8
  501. package/deps/blake3/reference_impl/README.md +0 -14
  502. package/deps/blake3/reference_impl/reference_impl.rs +0 -374
  503. package/deps/blake3/src/ffi_avx2.rs +0 -65
  504. package/deps/blake3/src/ffi_avx512.rs +0 -169
  505. package/deps/blake3/src/ffi_neon.rs +0 -82
  506. package/deps/blake3/src/ffi_sse2.rs +0 -126
  507. package/deps/blake3/src/ffi_sse41.rs +0 -126
  508. package/deps/blake3/src/guts.rs +0 -60
  509. package/deps/blake3/src/hazmat.rs +0 -704
  510. package/deps/blake3/src/io.rs +0 -64
  511. package/deps/blake3/src/join.rs +0 -92
  512. package/deps/blake3/src/lib.rs +0 -1835
  513. package/deps/blake3/src/platform.rs +0 -587
  514. package/deps/blake3/src/portable.rs +0 -198
  515. package/deps/blake3/src/rust_avx2.rs +0 -474
  516. package/deps/blake3/src/rust_sse2.rs +0 -775
  517. package/deps/blake3/src/rust_sse41.rs +0 -766
  518. package/deps/blake3/src/test.rs +0 -1049
  519. package/deps/blake3/src/traits.rs +0 -227
  520. package/deps/blake3/src/wasm32_simd.rs +0 -794
  521. package/deps/blake3/test_vectors/Cargo.toml +0 -19
  522. package/deps/blake3/test_vectors/cross_test.sh +0 -25
  523. package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
  524. package/deps/blake3/test_vectors/src/lib.rs +0 -350
  525. package/deps/blake3/test_vectors/test_vectors.json +0 -217
  526. package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
  527. package/deps/blake3/tools/compiler_version/build.rs +0 -6
  528. package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
  529. package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
  530. package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
  531. package/deps/blake3/tools/release.md +0 -16
  532. package/deps/ncrypto/.bazelignore +0 -4
  533. package/deps/ncrypto/.bazelrc +0 -1
  534. package/deps/ncrypto/.bazelversion +0 -1
  535. package/deps/ncrypto/.clang-format +0 -111
  536. package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
  537. package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
  538. package/deps/ncrypto/.github/workflows/linter.yml +0 -38
  539. package/deps/ncrypto/.github/workflows/macos.yml +0 -43
  540. package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
  541. package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
  542. package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
  543. package/deps/ncrypto/.python-version +0 -1
  544. package/deps/ncrypto/.release-please-manifest.json +0 -3
  545. package/deps/ncrypto/BUILD.bazel +0 -44
  546. package/deps/ncrypto/CHANGELOG.md +0 -37
  547. package/deps/ncrypto/CMakeLists.txt +0 -79
  548. package/deps/ncrypto/MODULE.bazel +0 -16
  549. package/deps/ncrypto/MODULE.bazel.lock +0 -461
  550. package/deps/ncrypto/cmake/CPM.cmake +0 -1225
  551. package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
  552. package/deps/ncrypto/ncrypto.pc.in +0 -10
  553. package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
  554. package/deps/ncrypto/pyproject.toml +0 -38
  555. package/deps/ncrypto/release-please-config.json +0 -11
  556. package/deps/ncrypto/src/CMakeLists.txt +0 -40
  557. package/deps/ncrypto/tests/BUILD.bazel +0 -11
  558. package/deps/ncrypto/tests/CMakeLists.txt +0 -7
  559. package/deps/ncrypto/tests/basic.cpp +0 -856
  560. package/deps/ncrypto/tools/run-clang-format.sh +0 -42
  561. 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>