react-native-quick-crypto 1.0.18 → 1.1.0

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 (751) hide show
  1. package/QuickCrypto.podspec +12 -38
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +3 -0
  4. package/cpp/utils/HybridUtils.cpp +39 -77
  5. package/deps/simdutf/.clang-format +4 -0
  6. package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +62 -0
  7. package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +1 -0
  8. package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +35 -0
  9. package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +29 -0
  10. package/deps/simdutf/.github/pull_request_template.md +51 -0
  11. package/deps/simdutf/.github/workflows/aarch64.yml +39 -0
  12. package/deps/simdutf/.github/workflows/alpine.yml +27 -0
  13. package/deps/simdutf/.github/workflows/amalgamation_demos.yml +34 -0
  14. package/deps/simdutf/.github/workflows/armv7.yml +32 -0
  15. package/deps/simdutf/.github/workflows/atomic_fuzz.yml +25 -0
  16. package/deps/simdutf/.github/workflows/cifuzz.yml +37 -0
  17. package/deps/simdutf/.github/workflows/clangformat.yml +36 -0
  18. package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +40 -0
  19. package/deps/simdutf/.github/workflows/debian.yml +33 -0
  20. package/deps/simdutf/.github/workflows/documentation.yml +36 -0
  21. package/deps/simdutf/.github/workflows/emscripten.yml +19 -0
  22. package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +39 -0
  23. package/deps/simdutf/.github/workflows/macos-latest.yml +29 -0
  24. package/deps/simdutf/.github/workflows/msys2-clang.yml +48 -0
  25. package/deps/simdutf/.github/workflows/msys2.yml +50 -0
  26. package/deps/simdutf/.github/workflows/ppc64le.yml +29 -0
  27. package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +35 -0
  28. package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +35 -0
  29. package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +31 -0
  30. package/deps/simdutf/.github/workflows/s390x.yml +29 -0
  31. package/deps/simdutf/.github/workflows/selective-amalgamation.yml +29 -0
  32. package/deps/simdutf/.github/workflows/typos.yml +19 -0
  33. package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +30 -0
  34. package/deps/simdutf/.github/workflows/ubuntu22.yml +32 -0
  35. package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +27 -0
  36. package/deps/simdutf/.github/workflows/ubuntu22sani.yml +29 -0
  37. package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +34 -0
  38. package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +34 -0
  39. package/deps/simdutf/.github/workflows/ubuntu24.yml +32 -0
  40. package/deps/simdutf/.github/workflows/ubuntu24sani.yml +36 -0
  41. package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +29 -0
  42. package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +21 -0
  43. package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +41 -0
  44. package/deps/simdutf/.github/workflows/vs17-ci.yml +41 -0
  45. package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +41 -0
  46. package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +36 -0
  47. package/deps/simdutf/AI_USAGE_POLICY.md +56 -0
  48. package/deps/simdutf/AUTHORS +6 -0
  49. package/deps/simdutf/CMakeLists.txt +231 -0
  50. package/deps/simdutf/CONTRIBUTING.md +214 -0
  51. package/deps/simdutf/CONTRIBUTORS +1 -0
  52. package/deps/simdutf/Doxyfile +2584 -0
  53. package/deps/simdutf/LICENSE-APACHE +201 -0
  54. package/deps/simdutf/LICENSE-MIT +18 -0
  55. package/deps/simdutf/Makefile.crosscompile +54 -0
  56. package/deps/simdutf/README-RVV.md +16 -0
  57. package/deps/simdutf/README.md +2782 -0
  58. package/deps/simdutf/SECURITY.md +8 -0
  59. package/deps/simdutf/benchmarks/CMakeLists.txt +101 -0
  60. package/deps/simdutf/benchmarks/alignment.cpp +150 -0
  61. package/deps/simdutf/benchmarks/base64/CMakeLists.txt +30 -0
  62. package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +875 -0
  63. package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +49 -0
  64. package/deps/simdutf/benchmarks/base64/node_base64.h +227 -0
  65. package/deps/simdutf/benchmarks/base64/openssl3_base64.h +334 -0
  66. package/deps/simdutf/benchmarks/benchmark.cpp +65 -0
  67. package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +347 -0
  68. package/deps/simdutf/benchmarks/competition/.clang-format-ignore +5 -0
  69. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +1276 -0
  70. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +595 -0
  71. package/deps/simdutf/benchmarks/competition/README.md +7 -0
  72. package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +91 -0
  73. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +444 -0
  74. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +13183 -0
  75. package/deps/simdutf/benchmarks/competition/inoue2008/script.py +73 -0
  76. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +738 -0
  77. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +293 -0
  78. package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +8 -0
  79. package/deps/simdutf/benchmarks/competition/u8u16/Makefile +44 -0
  80. package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +169 -0
  81. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +148 -0
  82. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +45 -0
  83. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +34 -0
  84. package/deps/simdutf/benchmarks/competition/u8u16/README +56 -0
  85. package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +43 -0
  86. package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +27 -0
  87. package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +16 -0
  88. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +18 -0
  89. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +16 -0
  90. package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +28 -0
  91. package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +20 -0
  92. package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +2 -0
  93. package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +440 -0
  94. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +121 -0
  95. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +158 -0
  96. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +270 -0
  97. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +141 -0
  98. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +216 -0
  99. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +119 -0
  100. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +2430 -0
  101. package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +39 -0
  102. package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +421 -0
  103. package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +836 -0
  104. package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +222 -0
  105. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +4 -0
  106. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +5 -0
  107. package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +390 -0
  108. package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +18 -0
  109. package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +448 -0
  110. package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +284 -0
  111. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +1975 -0
  112. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
  113. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +2263 -0
  114. package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +239 -0
  115. package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +232 -0
  116. package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +194 -0
  117. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +193 -0
  118. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +167 -0
  119. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +288 -0
  120. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +117 -0
  121. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +2 -0
  122. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +2 -0
  123. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +3 -0
  124. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +2 -0
  125. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +2 -0
  126. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +3 -0
  127. package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +2 -0
  128. package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +23 -0
  129. package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +44 -0
  130. package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +106 -0
  131. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +11 -0
  132. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +13 -0
  133. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +13 -0
  134. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +13 -0
  135. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +14 -0
  136. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +11 -0
  137. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +8 -0
  138. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +12 -0
  139. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +13 -0
  140. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +14 -0
  141. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +11 -0
  142. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +8 -0
  143. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +11 -0
  144. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +12 -0
  145. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +13 -0
  146. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +10 -0
  147. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +9 -0
  148. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +25 -0
  149. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +94 -0
  150. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +20 -0
  151. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +2 -0
  152. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +1 -0
  153. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +75 -0
  154. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +47 -0
  155. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +17 -0
  156. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +76 -0
  157. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +35 -0
  158. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +117 -0
  159. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +210 -0
  160. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +158 -0
  161. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +104 -0
  162. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +334 -0
  163. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +186 -0
  164. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +140 -0
  165. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +42 -0
  166. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +100 -0
  167. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +57 -0
  168. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +85 -0
  169. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +27 -0
  170. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +126 -0
  171. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +108 -0
  172. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +139 -0
  173. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +74 -0
  174. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +65 -0
  175. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +91 -0
  176. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +772 -0
  177. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +12 -0
  178. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +486 -0
  179. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +162 -0
  180. package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +15 -0
  181. package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +292 -0
  182. package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +23 -0
  183. package/deps/simdutf/benchmarks/competition/utfcpp/README.md +1503 -0
  184. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +335 -0
  185. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +338 -0
  186. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +103 -0
  187. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +103 -0
  188. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +274 -0
  189. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +34 -0
  190. package/deps/simdutf/benchmarks/dataset/README.md +155 -0
  191. package/deps/simdutf/benchmarks/dataset/emoji.txt +204 -0
  192. package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +40 -0
  193. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +80 -0
  194. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +20 -0
  195. package/deps/simdutf/benchmarks/find/CMakeLists.txt +6 -0
  196. package/deps/simdutf/benchmarks/find/findbenchmark.cpp +63 -0
  197. package/deps/simdutf/benchmarks/find/findbenchmarker.h +46 -0
  198. package/deps/simdutf/benchmarks/shortbench.cpp +555 -0
  199. package/deps/simdutf/benchmarks/src/CMakeLists.txt +52 -0
  200. package/deps/simdutf/benchmarks/src/apple_arm_events.h +1104 -0
  201. package/deps/simdutf/benchmarks/src/benchmark.cpp +3899 -0
  202. package/deps/simdutf/benchmarks/src/benchmark.h +317 -0
  203. package/deps/simdutf/benchmarks/src/benchmark_base.cpp +144 -0
  204. package/deps/simdutf/benchmarks/src/benchmark_base.h +98 -0
  205. package/deps/simdutf/benchmarks/src/cmdline.cpp +176 -0
  206. package/deps/simdutf/benchmarks/src/cmdline.h +35 -0
  207. package/deps/simdutf/benchmarks/src/event_counter.h +162 -0
  208. package/deps/simdutf/benchmarks/src/linux-perf-events.h +104 -0
  209. package/deps/simdutf/benchmarks/stream.cpp +209 -0
  210. package/deps/simdutf/benchmarks/threaded.cpp +123 -0
  211. package/deps/simdutf/cmake/CPM.cmake +1363 -0
  212. package/deps/simdutf/cmake/JoinPaths.cmake +23 -0
  213. package/deps/simdutf/cmake/add_cpp_test.cmake +68 -0
  214. package/deps/simdutf/cmake/simdutf-config.cmake.in +2 -0
  215. package/deps/simdutf/cmake/simdutf-flags.cmake +26 -0
  216. package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +4 -0
  217. package/deps/simdutf/cmake/toolchains-dev/README.md +32 -0
  218. package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +14 -0
  219. package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +22 -0
  220. package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +16 -0
  221. package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +16 -0
  222. package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +16 -0
  223. package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +38 -0
  224. package/deps/simdutf/doc/avx512.png +0 -0
  225. package/deps/simdutf/doc/logo.png +0 -0
  226. package/deps/simdutf/doc/logo.svg +165 -0
  227. package/deps/simdutf/doc/node2023.png +0 -0
  228. package/deps/simdutf/doc/shortinput.md +78 -0
  229. package/deps/simdutf/doc/utf16utf8.png +0 -0
  230. package/deps/simdutf/doc/utf8utf16.png +0 -0
  231. package/deps/simdutf/doc/widelogo.png +0 -0
  232. package/deps/simdutf/doxygen.py +50 -0
  233. package/deps/simdutf/fuzz/.clang-format +9 -0
  234. package/deps/simdutf/fuzz/CMakeLists.txt +45 -0
  235. package/deps/simdutf/fuzz/README.md +168 -0
  236. package/deps/simdutf/fuzz/atomic_base64.cpp +448 -0
  237. package/deps/simdutf/fuzz/base64.cpp +278 -0
  238. package/deps/simdutf/fuzz/build.sh +83 -0
  239. package/deps/simdutf/fuzz/conversion.cpp +669 -0
  240. package/deps/simdutf/fuzz/helpers/.clang-format-ignore +1 -0
  241. package/deps/simdutf/fuzz/helpers/common.h +135 -0
  242. package/deps/simdutf/fuzz/helpers/nameof.hpp +1258 -0
  243. package/deps/simdutf/fuzz/main.cpp +72 -0
  244. package/deps/simdutf/fuzz/minimize_and_cleanse.sh +87 -0
  245. package/deps/simdutf/fuzz/misc.cpp +216 -0
  246. package/deps/simdutf/fuzz/random_fuzz.sh +154 -0
  247. package/deps/simdutf/fuzz/roundtrip.cpp +588 -0
  248. package/deps/simdutf/fuzz/safe_conversion.cpp +104 -0
  249. package/deps/simdutf/include/simdutf/avx512.h +79 -0
  250. package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  251. package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  252. package/deps/simdutf/include/simdutf/common_defs.h +186 -0
  253. package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  254. package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  255. package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  256. package/deps/simdutf/include/simdutf/error.h +126 -0
  257. package/deps/simdutf/include/simdutf/implementation.h +7081 -0
  258. package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  259. package/deps/simdutf/include/simdutf/portability.h +285 -0
  260. package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  261. package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  262. package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  263. package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  264. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  265. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  266. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  267. package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  268. package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  269. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  270. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  271. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  272. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  273. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  274. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  275. package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  276. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  277. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  278. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  279. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  280. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  281. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  282. package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  283. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  284. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  285. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  286. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  287. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  288. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  289. package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  290. package/deps/simdutf/include/simdutf.h +26 -0
  291. package/deps/simdutf/include/simdutf_c.h +342 -0
  292. package/deps/simdutf/riscv/Dockerfile +16 -0
  293. package/deps/simdutf/riscv/README.md +24 -0
  294. package/deps/simdutf/riscv/remove-docker-station +8 -0
  295. package/deps/simdutf/riscv/run-docker-station +31 -0
  296. package/deps/simdutf/scripts/.flake8 +2 -0
  297. package/deps/simdutf/scripts/Makefile +2 -0
  298. package/deps/simdutf/scripts/README_ADD_FUNCTION.md +49 -0
  299. package/deps/simdutf/scripts/add_function.py +330 -0
  300. package/deps/simdutf/scripts/amalgamation_tests.py +156 -0
  301. package/deps/simdutf/scripts/base64/Makefile +2 -0
  302. package/deps/simdutf/scripts/base64/README.md +2 -0
  303. package/deps/simdutf/scripts/base64/avx512.py +76 -0
  304. package/deps/simdutf/scripts/base64/neon_decode.py +143 -0
  305. package/deps/simdutf/scripts/base64/neon_generate_lut.py +101 -0
  306. package/deps/simdutf/scripts/base64/sse.py +252 -0
  307. package/deps/simdutf/scripts/base64/sseregular.py +160 -0
  308. package/deps/simdutf/scripts/base64/sseurl.py +283 -0
  309. package/deps/simdutf/scripts/base64/table.py +59 -0
  310. package/deps/simdutf/scripts/base64bench_print.py +145 -0
  311. package/deps/simdutf/scripts/benchmark-all.py +119 -0
  312. package/deps/simdutf/scripts/benchmark_print.py +324 -0
  313. package/deps/simdutf/scripts/check_feature_macros.py +156 -0
  314. package/deps/simdutf/scripts/check_typos.sh +13 -0
  315. package/deps/simdutf/scripts/clang_format.sh +35 -0
  316. package/deps/simdutf/scripts/clang_format_docker.sh +38 -0
  317. package/deps/simdutf/scripts/common.py +24 -0
  318. package/deps/simdutf/scripts/compilation_benchmark.py +55 -0
  319. package/deps/simdutf/scripts/compile_many_variations.sh +64 -0
  320. package/deps/simdutf/scripts/create_latex_table.py +62 -0
  321. package/deps/simdutf/scripts/docker/Dockerfile +14 -0
  322. package/deps/simdutf/scripts/docker/Makefile +9 -0
  323. package/deps/simdutf/scripts/docker/README.md +30 -0
  324. package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
  325. package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +155 -0
  326. package/deps/simdutf/scripts/prepare_doxygen.sh +21 -0
  327. package/deps/simdutf/scripts/release.py +197 -0
  328. package/deps/simdutf/scripts/shortinputplots.py +97 -0
  329. package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +422 -0
  330. package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +105 -0
  331. package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +186 -0
  332. package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +137 -0
  333. package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +129 -0
  334. package/deps/simdutf/scripts/table.py +207 -0
  335. package/deps/simdutf/scripts/tests/new.txt +33 -0
  336. package/deps/simdutf/scripts/tests/old.txt +33 -0
  337. package/deps/simdutf/scripts/tests/results.txt +272 -0
  338. package/deps/simdutf/simdutf.pc.in +11 -0
  339. package/deps/simdutf/singleheader/.flake8 +2 -0
  340. package/deps/simdutf/singleheader/CMakeLists.txt +64 -0
  341. package/deps/simdutf/singleheader/README-dev.md +81 -0
  342. package/deps/simdutf/singleheader/README.md +19 -0
  343. package/deps/simdutf/singleheader/amalgamate.py +513 -0
  344. package/deps/simdutf/singleheader/amalgamation_demo.c +59 -0
  345. package/deps/simdutf/singleheader/amalgamation_demo.cpp +54 -0
  346. package/deps/simdutf/singleheader/test-features.py +262 -0
  347. package/deps/simdutf/src/CMakeLists.txt +78 -0
  348. package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  349. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  350. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  351. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  352. package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  353. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  354. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  355. package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  356. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  357. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  358. package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  359. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  360. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  361. package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  362. package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  363. package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  364. package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  365. package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  366. package/deps/simdutf/src/encoding_types.cpp +67 -0
  367. package/deps/simdutf/src/error.cpp +3 -0
  368. package/deps/simdutf/src/fallback/implementation.cpp +589 -0
  369. package/deps/simdutf/src/generic/ascii_validation.h +50 -0
  370. package/deps/simdutf/src/generic/base64.h +233 -0
  371. package/deps/simdutf/src/generic/base64lengths.h +63 -0
  372. package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  373. package/deps/simdutf/src/generic/find.h +75 -0
  374. package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  375. package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  376. package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  377. package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  378. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  379. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  380. package/deps/simdutf/src/generic/utf16.h +73 -0
  381. package/deps/simdutf/src/generic/utf32.h +136 -0
  382. package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  383. package/deps/simdutf/src/generic/utf8.h +92 -0
  384. package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  385. package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  386. package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  387. package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  388. package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  389. package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  390. package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  391. package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  392. package/deps/simdutf/src/generic/validate_utf16.h +164 -0
  393. package/deps/simdutf/src/generic/validate_utf32.h +99 -0
  394. package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  395. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  396. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  397. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  398. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  399. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  400. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  401. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  402. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  403. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  404. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  405. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  406. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  407. package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  408. package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  409. package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  410. package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  411. package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  412. package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  413. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  414. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  415. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  416. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  417. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  418. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  419. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  420. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  421. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  422. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  423. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  424. package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  425. package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  426. package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  427. package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  428. package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  429. package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  430. package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  431. package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  432. package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  433. package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  434. package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  435. package/deps/simdutf/src/implementation.cpp +2526 -0
  436. package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  437. package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  438. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  439. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  440. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  441. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  442. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  443. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  444. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  445. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  446. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  447. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  448. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  449. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  450. package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  451. package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  452. package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  453. package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  454. package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  455. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  456. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  457. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  458. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  459. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  460. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  461. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  462. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  463. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  464. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  465. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  466. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  467. package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  468. package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  469. package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  470. package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  471. package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  472. package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  473. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  474. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  475. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  476. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  477. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  478. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  479. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  480. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  481. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  482. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  483. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  484. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  485. package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  486. package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  487. package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  488. package/deps/simdutf/src/ppc64/templates.cpp +91 -0
  489. package/deps/simdutf/src/rvv/implementation.cpp +138 -0
  490. package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  491. package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  492. package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  493. package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  494. package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  495. package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  496. package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  497. package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  498. package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  499. package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  500. package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  501. package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  502. package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  503. package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  504. package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  505. package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  506. package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  507. package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  508. package/deps/simdutf/src/simdutf/arm64.h +43 -0
  509. package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  510. package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  511. package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  512. package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  513. package/deps/simdutf/src/simdutf/fallback.h +42 -0
  514. package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  515. package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  516. package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  517. package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  518. package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  519. package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  520. package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  521. package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  522. package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  523. package/deps/simdutf/src/simdutf/haswell.h +63 -0
  524. package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  525. package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  526. package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  527. package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  528. package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  529. package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  530. package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  531. package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  532. package/deps/simdutf/src/simdutf/icelake.h +81 -0
  533. package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  534. package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  535. package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  536. package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  537. package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  538. package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  539. package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  540. package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  541. package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  542. package/deps/simdutf/src/simdutf/lasx.h +49 -0
  543. package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  544. package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  545. package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  546. package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  547. package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  548. package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  549. package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  550. package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  551. package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  552. package/deps/simdutf/src/simdutf/lsx.h +52 -0
  553. package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  554. package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  555. package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  556. package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  557. package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  558. package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  559. package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  560. package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  561. package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  562. package/deps/simdutf/src/simdutf/ppc64.h +40 -0
  563. package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  564. package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  565. package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  566. package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  567. package/deps/simdutf/src/simdutf/rvv.h +41 -0
  568. package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  569. package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  570. package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  571. package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  572. package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  573. package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  574. package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  575. package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  576. package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  577. package/deps/simdutf/src/simdutf/westmere.h +59 -0
  578. package/deps/simdutf/src/simdutf.cpp +152 -0
  579. package/deps/simdutf/src/simdutf_c.cpp +525 -0
  580. package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  581. package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  582. package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  583. package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  584. package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  585. package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  586. package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  587. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  588. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  589. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  590. package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  591. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  592. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  593. package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  594. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  595. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  596. package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  597. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  598. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  599. package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  600. package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  601. package/deps/simdutf/tests/CMakeLists.txt +483 -0
  602. package/deps/simdutf/tests/atomic_base64_tests.cpp +2845 -0
  603. package/deps/simdutf/tests/base64_tests.cpp +3617 -0
  604. package/deps/simdutf/tests/basic_fuzzer.cpp +805 -0
  605. package/deps/simdutf/tests/bele_tests.cpp +182 -0
  606. package/deps/simdutf/tests/constexpr_base64_tests.cpp +387 -0
  607. package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +52 -0
  608. package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +80 -0
  609. package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +66 -0
  610. package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +120 -0
  611. package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +203 -0
  612. package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +276 -0
  613. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +109 -0
  614. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +136 -0
  615. package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +193 -0
  616. package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +381 -0
  617. package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +259 -0
  618. package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +266 -0
  619. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +148 -0
  620. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +176 -0
  621. package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +213 -0
  622. package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +318 -0
  623. package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +343 -0
  624. package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +271 -0
  625. package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +111 -0
  626. package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +96 -0
  627. package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +148 -0
  628. package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +192 -0
  629. package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +166 -0
  630. package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +215 -0
  631. package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +181 -0
  632. package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +261 -0
  633. package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +516 -0
  634. package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +579 -0
  635. package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +412 -0
  636. package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +480 -0
  637. package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +671 -0
  638. package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +455 -0
  639. package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +1204 -0
  640. package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +337 -0
  641. package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +37 -0
  642. package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +97 -0
  643. package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +126 -0
  644. package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +71 -0
  645. package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +122 -0
  646. package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +244 -0
  647. package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +49 -0
  648. package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +92 -0
  649. package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +114 -0
  650. package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +109 -0
  651. package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +84 -0
  652. package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +124 -0
  653. package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +221 -0
  654. package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +155 -0
  655. package/deps/simdutf/tests/count_utf16be.cpp +64 -0
  656. package/deps/simdutf/tests/count_utf16le.cpp +61 -0
  657. package/deps/simdutf/tests/count_utf8.cpp +87 -0
  658. package/deps/simdutf/tests/detect_encodings_tests.cpp +312 -0
  659. package/deps/simdutf/tests/embed/valid_utf8.txt +1 -0
  660. package/deps/simdutf/tests/embed_tests.cpp +22 -0
  661. package/deps/simdutf/tests/find_tests.cpp +77 -0
  662. package/deps/simdutf/tests/fixed_string_tests.cpp +153 -0
  663. package/deps/simdutf/tests/helpers/CMakeLists.txt +25 -0
  664. package/deps/simdutf/tests/helpers/compiletime_conversions.h +222 -0
  665. package/deps/simdutf/tests/helpers/fixed_string.h +267 -0
  666. package/deps/simdutf/tests/helpers/random_int.cpp +30 -0
  667. package/deps/simdutf/tests/helpers/random_int.h +39 -0
  668. package/deps/simdutf/tests/helpers/random_utf16.cpp +123 -0
  669. package/deps/simdutf/tests/helpers/random_utf16.h +52 -0
  670. package/deps/simdutf/tests/helpers/random_utf32.cpp +41 -0
  671. package/deps/simdutf/tests/helpers/random_utf32.h +40 -0
  672. package/deps/simdutf/tests/helpers/random_utf8.cpp +93 -0
  673. package/deps/simdutf/tests/helpers/random_utf8.h +36 -0
  674. package/deps/simdutf/tests/helpers/test.cpp +231 -0
  675. package/deps/simdutf/tests/helpers/test.h +193 -0
  676. package/deps/simdutf/tests/helpers/transcode_test_base.cpp +1257 -0
  677. package/deps/simdutf/tests/helpers/transcode_test_base.h +683 -0
  678. package/deps/simdutf/tests/helpers/utf16.h +27 -0
  679. package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +43 -0
  680. package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +47 -0
  681. package/deps/simdutf/tests/internal_tests.cpp +27 -0
  682. package/deps/simdutf/tests/null_safety_tests.cpp +94 -0
  683. package/deps/simdutf/tests/random_fuzzer.cpp +779 -0
  684. package/deps/simdutf/tests/readme_tests.cpp +274 -0
  685. package/deps/simdutf/tests/reference/CMakeLists.txt +23 -0
  686. package/deps/simdutf/tests/reference/decode_utf16.h +81 -0
  687. package/deps/simdutf/tests/reference/decode_utf32.h +47 -0
  688. package/deps/simdutf/tests/reference/encode_latin1.cpp +1 -0
  689. package/deps/simdutf/tests/reference/encode_latin1.h +32 -0
  690. package/deps/simdutf/tests/reference/encode_utf16.cpp +49 -0
  691. package/deps/simdutf/tests/reference/encode_utf16.h +20 -0
  692. package/deps/simdutf/tests/reference/encode_utf32.cpp +1 -0
  693. package/deps/simdutf/tests/reference/encode_utf32.h +36 -0
  694. package/deps/simdutf/tests/reference/encode_utf8.cpp +1 -0
  695. package/deps/simdutf/tests/reference/encode_utf8.h +40 -0
  696. package/deps/simdutf/tests/reference/validate_utf16.cpp +60 -0
  697. package/deps/simdutf/tests/reference/validate_utf16.h +14 -0
  698. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +35 -0
  699. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +13 -0
  700. package/deps/simdutf/tests/reference/validate_utf32.cpp +27 -0
  701. package/deps/simdutf/tests/reference/validate_utf32.h +12 -0
  702. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +27 -0
  703. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +12 -0
  704. package/deps/simdutf/tests/reference/validate_utf8.cpp +82 -0
  705. package/deps/simdutf/tests/reference/validate_utf8.h +11 -0
  706. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +43 -0
  707. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +12 -0
  708. package/deps/simdutf/tests/select_implementation.cpp +43 -0
  709. package/deps/simdutf/tests/simdutf_c_tests.cpp +244 -0
  710. package/deps/simdutf/tests/span_tests.cpp +401 -0
  711. package/deps/simdutf/tests/special_tests.cpp +559 -0
  712. package/deps/simdutf/tests/straight_c_test.c +187 -0
  713. package/deps/simdutf/tests/text_encoding_tests.cpp +77 -0
  714. package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +377 -0
  715. package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +202 -0
  716. package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +165 -0
  717. package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +77 -0
  718. package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +175 -0
  719. package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +188 -0
  720. package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +268 -0
  721. package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +274 -0
  722. package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +92 -0
  723. package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +114 -0
  724. package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +178 -0
  725. package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +88 -0
  726. package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +33 -0
  727. package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +228 -0
  728. package/deps/simdutf/tools/CMakeLists.txt +85 -0
  729. package/deps/simdutf/tools/fastbase64.cpp +250 -0
  730. package/deps/simdutf/tools/sutf.cpp +556 -0
  731. package/deps/simdutf/tools/sutf.h +40 -0
  732. package/lib/commonjs/blake3.js +2 -1
  733. package/lib/commonjs/blake3.js.map +1 -1
  734. package/lib/commonjs/diffie-hellman.js +5 -4
  735. package/lib/commonjs/diffie-hellman.js.map +1 -1
  736. package/lib/commonjs/ecdh.js +5 -4
  737. package/lib/commonjs/ecdh.js.map +1 -1
  738. package/lib/module/blake3.js +2 -1
  739. package/lib/module/blake3.js.map +1 -1
  740. package/lib/module/diffie-hellman.js +5 -4
  741. package/lib/module/diffie-hellman.js.map +1 -1
  742. package/lib/module/ecdh.js +5 -4
  743. package/lib/module/ecdh.js.map +1 -1
  744. package/lib/tsconfig.tsbuildinfo +1 -1
  745. package/lib/typescript/blake3.d.ts.map +1 -1
  746. package/lib/typescript/diffie-hellman.d.ts.map +1 -1
  747. package/lib/typescript/ecdh.d.ts.map +1 -1
  748. package/package.json +2 -2
  749. package/src/blake3.ts +2 -1
  750. package/src/diffie-hellman.ts +5 -7
  751. package/src/ecdh.ts +5 -8
@@ -0,0 +1,363 @@
1
+ #ifndef SIMDUTF_HASWELL_SIMD_H
2
+ #define SIMDUTF_HASWELL_SIMD_H
3
+
4
+ namespace simdutf {
5
+ namespace SIMDUTF_IMPLEMENTATION {
6
+ namespace {
7
+ namespace simd {
8
+
9
+ // Forward-declared so they can be used by splat and friends.
10
+ template <typename Child> struct base {
11
+ __m256i value;
12
+
13
+ // Zero constructor
14
+ simdutf_really_inline base() : value{__m256i()} {}
15
+
16
+ // Conversion from SIMD register
17
+ simdutf_really_inline base(const __m256i _value) : value(_value) {}
18
+
19
+ simdutf_really_inline operator const __m256i &() const { return this->value; }
20
+
21
+ template <endianness big_endian>
22
+ simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
23
+ __m256i first = _mm256_cvtepu8_epi16(_mm256_castsi256_si128(*this));
24
+ __m256i second = _mm256_cvtepu8_epi16(_mm256_extractf128_si256(*this, 1));
25
+ if (big_endian) {
26
+ const __m256i swap = _mm256_setr_epi8(
27
+ 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18,
28
+ 21, 20, 23, 22, 25, 24, 27, 26, 29, 28, 31, 30);
29
+ first = _mm256_shuffle_epi8(first, swap);
30
+ second = _mm256_shuffle_epi8(second, swap);
31
+ }
32
+ _mm256_storeu_si256(reinterpret_cast<__m256i *>(ptr), first);
33
+ _mm256_storeu_si256(reinterpret_cast<__m256i *>(ptr + 16), second);
34
+ }
35
+
36
+ simdutf_really_inline void store_ascii_as_utf32(char32_t *ptr) const {
37
+ _mm256_storeu_si256(reinterpret_cast<__m256i *>(ptr),
38
+ _mm256_cvtepu8_epi32(_mm256_castsi256_si128(*this)));
39
+ _mm256_storeu_si256(reinterpret_cast<__m256i *>(ptr + 8),
40
+ _mm256_cvtepu8_epi32(_mm256_castsi256_si128(
41
+ _mm256_srli_si256(*this, 8))));
42
+ _mm256_storeu_si256(
43
+ reinterpret_cast<__m256i *>(ptr + 16),
44
+ _mm256_cvtepu8_epi32(_mm256_extractf128_si256(*this, 1)));
45
+ _mm256_storeu_si256(reinterpret_cast<__m256i *>(ptr + 24),
46
+ _mm256_cvtepu8_epi32(_mm_srli_si128(
47
+ _mm256_extractf128_si256(*this, 1), 8)));
48
+ }
49
+ // Bit operations
50
+ simdutf_really_inline Child operator|(const Child other) const {
51
+ return _mm256_or_si256(*this, other);
52
+ }
53
+ simdutf_really_inline Child operator&(const Child other) const {
54
+ return _mm256_and_si256(*this, other);
55
+ }
56
+ simdutf_really_inline Child operator^(const Child other) const {
57
+ return _mm256_xor_si256(*this, other);
58
+ }
59
+ simdutf_really_inline Child &operator|=(const Child other) {
60
+ auto this_cast = static_cast<Child *>(this);
61
+ *this_cast = *this_cast | other;
62
+ return *this_cast;
63
+ }
64
+ };
65
+
66
+ // Forward-declared so they can be used by splat and friends.
67
+ template <typename T> struct simd8;
68
+
69
+ template <typename T, typename Mask = simd8<bool>>
70
+ struct base8 : base<simd8<T>> {
71
+ simdutf_really_inline base8() : base<simd8<T>>() {}
72
+
73
+ simdutf_really_inline base8(const __m256i _value) : base<simd8<T>>(_value) {}
74
+
75
+ friend simdutf_always_inline Mask operator==(const simd8<T> lhs,
76
+ const simd8<T> rhs) {
77
+ return _mm256_cmpeq_epi8(lhs, rhs);
78
+ }
79
+
80
+ static const int SIZE = sizeof(base<T>::value);
81
+
82
+ template <int N = 1>
83
+ simdutf_really_inline simd8<T> prev(const simd8<T> prev_chunk) const {
84
+ return _mm256_alignr_epi8(
85
+ *this, _mm256_permute2x128_si256(prev_chunk, *this, 0x21), 16 - N);
86
+ }
87
+ };
88
+
89
+ // SIMD byte mask type (returned by things like eq and gt)
90
+ template <> struct simd8<bool> : base8<bool> {
91
+ static simdutf_really_inline simd8<bool> splat(bool _value) {
92
+ return _mm256_set1_epi8(uint8_t(-(!!_value)));
93
+ }
94
+
95
+ simdutf_really_inline simd8(const __m256i _value) : base8<bool>(_value) {}
96
+
97
+ simdutf_really_inline simd8(bool _value) : base8<bool>(splat(_value)) {}
98
+
99
+ simdutf_really_inline uint32_t to_bitmask() const {
100
+ return uint32_t(_mm256_movemask_epi8(value));
101
+ }
102
+ };
103
+
104
+ template <typename T> struct base8_numeric : base8<T> {
105
+ static simdutf_really_inline simd8<T> splat(T _value) {
106
+ return _mm256_set1_epi8(_value);
107
+ }
108
+ static simdutf_really_inline simd8<T> zero() {
109
+ return _mm256_setzero_si256();
110
+ }
111
+ static simdutf_really_inline simd8<T> load(const T values[32]) {
112
+ return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(values));
113
+ }
114
+ // Repeat 16 values as many times as necessary (usually for lookup tables)
115
+ static simdutf_really_inline simd8<T> repeat_16(T v0, T v1, T v2, T v3, T v4,
116
+ T v5, T v6, T v7, T v8, T v9,
117
+ T v10, T v11, T v12, T v13,
118
+ T v14, T v15) {
119
+ return simd8<T>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
120
+ v14, v15, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
121
+ v12, v13, v14, v15);
122
+ }
123
+
124
+ simdutf_really_inline base8_numeric() : base8<T>() {}
125
+ simdutf_really_inline base8_numeric(const __m256i _value)
126
+ : base8<T>(_value) {}
127
+
128
+ // Store to array
129
+ simdutf_really_inline void store(T dst[32]) const {
130
+ return _mm256_storeu_si256(reinterpret_cast<__m256i *>(dst), *this);
131
+ }
132
+
133
+ // Addition/subtraction are the same for signed and unsigned
134
+ simdutf_really_inline simd8<T> operator-(const simd8<T> other) const {
135
+ return _mm256_sub_epi8(*this, other);
136
+ }
137
+ simdutf_really_inline simd8<T> &operator-=(const simd8<T> other) {
138
+ *this = *this - other;
139
+ return *static_cast<simd8<T> *>(this);
140
+ }
141
+
142
+ // Override to distinguish from bool version
143
+ simdutf_really_inline simd8<T> operator~() const { return *this ^ 0xFFu; }
144
+
145
+ // Perform a lookup assuming the value is between 0 and 16 (undefined behavior
146
+ // for out of range values)
147
+ template <typename L>
148
+ simdutf_really_inline simd8<L> lookup_16(simd8<L> lookup_table) const {
149
+ return _mm256_shuffle_epi8(lookup_table, *this);
150
+ }
151
+
152
+ template <typename L>
153
+ simdutf_really_inline simd8<L>
154
+ lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
155
+ L replace5, L replace6, L replace7, L replace8, L replace9,
156
+ L replace10, L replace11, L replace12, L replace13, L replace14,
157
+ L replace15) const {
158
+ return lookup_16(simd8<L>::repeat_16(
159
+ replace0, replace1, replace2, replace3, replace4, replace5, replace6,
160
+ replace7, replace8, replace9, replace10, replace11, replace12,
161
+ replace13, replace14, replace15));
162
+ }
163
+ };
164
+
165
+ // Signed bytes
166
+ template <> struct simd8<int8_t> : base8_numeric<int8_t> {
167
+ simdutf_really_inline simd8() : base8_numeric<int8_t>() {}
168
+ simdutf_really_inline simd8(const __m256i _value)
169
+ : base8_numeric<int8_t>(_value) {}
170
+
171
+ // Splat constructor
172
+ simdutf_really_inline simd8(int8_t _value) : simd8(splat(_value)) {}
173
+ // Array constructor
174
+ simdutf_really_inline simd8(const int8_t values[32]) : simd8(load(values)) {}
175
+ simdutf_really_inline operator simd8<uint8_t>() const;
176
+
177
+ simdutf_really_inline bool is_ascii() const {
178
+ return _mm256_movemask_epi8(*this) == 0;
179
+ }
180
+ // Order-sensitive comparisons
181
+ simdutf_really_inline simd8<bool> operator>(const simd8<int8_t> other) const {
182
+ return _mm256_cmpgt_epi8(*this, other);
183
+ }
184
+ simdutf_really_inline simd8<bool> operator<(const simd8<int8_t> other) const {
185
+ return _mm256_cmpgt_epi8(other, *this);
186
+ }
187
+ };
188
+
189
+ // Unsigned bytes
190
+ template <> struct simd8<uint8_t> : base8_numeric<uint8_t> {
191
+ simdutf_really_inline simd8() : base8_numeric<uint8_t>() {}
192
+ simdutf_really_inline simd8(const __m256i _value)
193
+ : base8_numeric<uint8_t>(_value) {}
194
+ // Splat constructor
195
+ simdutf_really_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
196
+ // Array constructor
197
+ simdutf_really_inline simd8(const uint8_t values[32]) : simd8(load(values)) {}
198
+ // Member-by-member initialization
199
+ simdutf_really_inline
200
+ simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
201
+ uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
202
+ uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15,
203
+ uint8_t v16, uint8_t v17, uint8_t v18, uint8_t v19, uint8_t v20,
204
+ uint8_t v21, uint8_t v22, uint8_t v23, uint8_t v24, uint8_t v25,
205
+ uint8_t v26, uint8_t v27, uint8_t v28, uint8_t v29, uint8_t v30,
206
+ uint8_t v31)
207
+ : simd8(_mm256_setr_epi8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
208
+ v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
209
+ v22, v23, v24, v25, v26, v27, v28, v29, v30,
210
+ v31)) {}
211
+
212
+ // Saturated math
213
+ simdutf_really_inline simd8<uint8_t>
214
+ saturating_sub(const simd8<uint8_t> other) const {
215
+ return _mm256_subs_epu8(*this, other);
216
+ }
217
+
218
+ // Order-specific operations
219
+ simdutf_really_inline simd8<uint8_t>
220
+ min_val(const simd8<uint8_t> other) const {
221
+ return _mm256_min_epu8(other, *this);
222
+ }
223
+ // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
224
+ simdutf_really_inline simd8<uint8_t>
225
+ gt_bits(const simd8<uint8_t> other) const {
226
+ return this->saturating_sub(other);
227
+ }
228
+ simdutf_really_inline simd8<bool>
229
+ operator>=(const simd8<uint8_t> other) const {
230
+ return other.min_val(*this) == other;
231
+ }
232
+
233
+ // Bit-specific operations
234
+ simdutf_really_inline bool is_ascii() const {
235
+ return _mm256_movemask_epi8(*this) == 0;
236
+ }
237
+ simdutf_really_inline bool bits_not_set_anywhere() const {
238
+ return _mm256_testz_si256(*this, *this);
239
+ }
240
+
241
+ simdutf_really_inline bool any_bits_set_anywhere() const {
242
+ return !bits_not_set_anywhere();
243
+ }
244
+
245
+ template <int N> simdutf_really_inline simd8<uint8_t> shr() const {
246
+ return simd8<uint8_t>(_mm256_srli_epi16(*this, N)) & uint8_t(0xFFu >> N);
247
+ }
248
+
249
+ simdutf_really_inline uint64_t sum_bytes() const {
250
+ const auto tmp = _mm256_sad_epu8(value, _mm256_setzero_si256());
251
+
252
+ return _mm256_extract_epi64(tmp, 0) + _mm256_extract_epi64(tmp, 1) +
253
+ _mm256_extract_epi64(tmp, 2) + _mm256_extract_epi64(tmp, 3);
254
+ }
255
+ };
256
+ simdutf_really_inline simd8<int8_t>::operator simd8<uint8_t>() const {
257
+ return this->value;
258
+ }
259
+
260
+ template <typename T> struct simd8x64 {
261
+ static constexpr int NUM_CHUNKS = 64 / sizeof(simd8<T>);
262
+ static_assert(NUM_CHUNKS == 2,
263
+ "Haswell kernel should use two registers per 64-byte block.");
264
+ simd8<T> chunks[NUM_CHUNKS];
265
+
266
+ simd8x64(const simd8x64<T> &o) = delete; // no copy allowed
267
+ simd8x64<T> &
268
+ operator=(const simd8<T> other) = delete; // no assignment allowed
269
+ simd8x64() = delete; // no default constructor allowed
270
+
271
+ simdutf_really_inline simd8x64(const simd8<T> chunk0, const simd8<T> chunk1)
272
+ : chunks{chunk0, chunk1} {}
273
+ simdutf_really_inline simd8x64(const T *ptr)
274
+ : chunks{simd8<T>::load(ptr),
275
+ simd8<T>::load(ptr + sizeof(simd8<T>) / sizeof(T))} {}
276
+
277
+ simdutf_really_inline void store(T *ptr) const {
278
+ this->chunks[0].store(ptr + sizeof(simd8<T>) * 0 / sizeof(T));
279
+ this->chunks[1].store(ptr + sizeof(simd8<T>) * 1 / sizeof(T));
280
+ }
281
+
282
+ simdutf_really_inline uint64_t to_bitmask() const {
283
+ uint64_t r_lo = uint32_t(this->chunks[0].to_bitmask());
284
+ uint64_t r_hi = this->chunks[1].to_bitmask();
285
+ return r_lo | (r_hi << 32);
286
+ }
287
+
288
+ simdutf_really_inline simd8x64<T> &operator|=(const simd8x64<T> &other) {
289
+ this->chunks[0] |= other.chunks[0];
290
+ this->chunks[1] |= other.chunks[1];
291
+ return *this;
292
+ }
293
+
294
+ simdutf_really_inline simd8<T> reduce_or() const {
295
+ return this->chunks[0] | this->chunks[1];
296
+ }
297
+
298
+ simdutf_really_inline bool is_ascii() const {
299
+ return this->reduce_or().is_ascii();
300
+ }
301
+
302
+ template <endianness endian>
303
+ simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
304
+ this->chunks[0].template store_ascii_as_utf16<endian>(ptr +
305
+ sizeof(simd8<T>) * 0);
306
+ this->chunks[1].template store_ascii_as_utf16<endian>(ptr +
307
+ sizeof(simd8<T>) * 1);
308
+ }
309
+
310
+ simdutf_really_inline void store_ascii_as_utf32(char32_t *ptr) const {
311
+ this->chunks[0].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 0);
312
+ this->chunks[1].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 1);
313
+ }
314
+
315
+ simdutf_really_inline uint64_t in_range(const T low, const T high) const {
316
+ const simd8<T> mask_low = simd8<T>::splat(low);
317
+ const simd8<T> mask_high = simd8<T>::splat(high);
318
+
319
+ return simd8x64<bool>(
320
+ (this->chunks[0] <= mask_high) & (this->chunks[0] >= mask_low),
321
+ (this->chunks[1] <= mask_high) & (this->chunks[1] >= mask_low))
322
+ .to_bitmask();
323
+ }
324
+
325
+ simdutf_really_inline uint64_t lt(const T m) const {
326
+ const simd8<T> mask = simd8<T>::splat(m);
327
+ return simd8x64<bool>(this->chunks[0] < mask, this->chunks[1] < mask)
328
+ .to_bitmask();
329
+ }
330
+
331
+ simdutf_really_inline uint64_t gt(const T m) const {
332
+ const simd8<T> mask = simd8<T>::splat(m);
333
+ return simd8x64<bool>(this->chunks[0] > mask, this->chunks[1] > mask)
334
+ .to_bitmask();
335
+ }
336
+ simdutf_really_inline uint64_t eq(const T m) const {
337
+ const simd8<T> mask = simd8<T>::splat(m);
338
+ return simd8x64<bool>(this->chunks[0] == mask, this->chunks[1] == mask)
339
+ .to_bitmask();
340
+ }
341
+ simdutf_really_inline uint64_t gteq_unsigned(const uint8_t m) const {
342
+ const simd8<uint8_t> mask = simd8<uint8_t>::splat(m);
343
+ return simd8x64<bool>((simd8<uint8_t>(__m256i(this->chunks[0])) >= mask),
344
+ (simd8<uint8_t>(__m256i(this->chunks[1])) >= mask))
345
+ .to_bitmask();
346
+ }
347
+ }; // struct simd8x64<T>
348
+
349
+ #include "simdutf/haswell/simd16-inl.h"
350
+ #include "simdutf/haswell/simd32-inl.h"
351
+ #include "simdutf/haswell/simd64-inl.h"
352
+
353
+ simdutf_really_inline simd64<uint64_t> sum_8bytes(const simd8<uint8_t> v) {
354
+ return _mm256_sad_epu8(v.value, simd8<uint8_t>::zero());
355
+ }
356
+
357
+ } // namespace simd
358
+
359
+ } // unnamed namespace
360
+ } // namespace SIMDUTF_IMPLEMENTATION
361
+ } // namespace simdutf
362
+
363
+ #endif // SIMDUTF_HASWELL_SIMD_H
@@ -0,0 +1,261 @@
1
+ #ifdef __GNUC__
2
+ #if __GNUC__ < 8
3
+ #define _mm256_set_m128i(xmm1, xmm2) \
4
+ _mm256_permute2f128_si256(_mm256_castsi128_si256(xmm1), \
5
+ _mm256_castsi128_si256(xmm2), 2)
6
+ #define _mm256_setr_m128i(xmm2, xmm1) \
7
+ _mm256_permute2f128_si256(_mm256_castsi128_si256(xmm1), \
8
+ _mm256_castsi128_si256(xmm2), 2)
9
+ #endif
10
+ #endif
11
+
12
+ template <typename T> struct simd16;
13
+
14
+ template <typename T, typename Mask = simd16<bool>>
15
+ struct base16 : base<simd16<T>> {
16
+ using bitmask_type = uint32_t;
17
+
18
+ simdutf_really_inline base16() : base<simd16<T>>() {}
19
+ simdutf_really_inline base16(const __m256i _value)
20
+ : base<simd16<T>>(_value) {}
21
+ template <typename Pointer>
22
+ simdutf_really_inline base16(const Pointer *ptr)
23
+ : base16(_mm256_loadu_si256(reinterpret_cast<const __m256i *>(ptr))) {}
24
+
25
+ friend simdutf_always_inline Mask operator==(const simd16<T> lhs,
26
+ const simd16<T> rhs) {
27
+ return _mm256_cmpeq_epi16(lhs, rhs);
28
+ }
29
+
30
+ /// the size of vector in bytes
31
+ static const int SIZE = sizeof(base<simd16<T>>::value);
32
+
33
+ /// the number of elements of type T a vector can hold
34
+ static const int ELEMENTS = SIZE / sizeof(T);
35
+ };
36
+
37
+ // SIMD byte mask type (returned by things like eq and gt)
38
+ template <> struct simd16<bool> : base16<bool> {
39
+ static simdutf_really_inline simd16<bool> splat(bool _value) {
40
+ return _mm256_set1_epi16(uint16_t(-(!!_value)));
41
+ }
42
+
43
+ simdutf_really_inline simd16() : base16() {}
44
+
45
+ simdutf_really_inline simd16(const __m256i _value) : base16<bool>(_value) {}
46
+
47
+ // Splat constructor
48
+ simdutf_really_inline simd16(bool _value) : base16<bool>(splat(_value)) {}
49
+
50
+ simdutf_really_inline bitmask_type to_bitmask() const {
51
+ return _mm256_movemask_epi8(*this);
52
+ }
53
+
54
+ simdutf_really_inline simd16<bool> operator~() const { return *this ^ true; }
55
+ };
56
+
57
+ template <typename T> struct base16_numeric : base16<T> {
58
+ static simdutf_really_inline simd16<T> splat(T _value) {
59
+ return _mm256_set1_epi16(_value);
60
+ }
61
+
62
+ static simdutf_really_inline simd16<T> zero() {
63
+ return _mm256_setzero_si256();
64
+ }
65
+
66
+ static simdutf_really_inline simd16<T> load(const T values[8]) {
67
+ return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(values));
68
+ }
69
+
70
+ simdutf_really_inline base16_numeric() : base16<T>() {}
71
+
72
+ simdutf_really_inline base16_numeric(const __m256i _value)
73
+ : base16<T>(_value) {}
74
+
75
+ // Store to array
76
+ simdutf_really_inline void store(T dst[8]) const {
77
+ return _mm256_storeu_si256(reinterpret_cast<__m256i *>(dst), *this);
78
+ }
79
+
80
+ // Override to distinguish from bool version
81
+ simdutf_really_inline simd16<T> operator~() const { return *this ^ 0xFFFFu; }
82
+
83
+ // Addition/subtraction are the same for signed and unsigned
84
+ simdutf_really_inline simd16<T> operator+(const simd16<T> other) const {
85
+ return _mm256_add_epi16(*this, other);
86
+ }
87
+ simdutf_really_inline simd16<T> &operator+=(const simd16<T> other) {
88
+ *this = *this + other;
89
+ return *static_cast<simd16<T> *>(this);
90
+ }
91
+ };
92
+
93
+ // Unsigned code units
94
+ template <> struct simd16<uint16_t> : base16_numeric<uint16_t> {
95
+ simdutf_really_inline simd16() : base16_numeric<uint16_t>() {}
96
+ simdutf_really_inline simd16(const __m256i _value)
97
+ : base16_numeric<uint16_t>(_value) {}
98
+
99
+ // Splat constructor
100
+ simdutf_really_inline simd16(uint16_t _value) : simd16(splat(_value)) {}
101
+ // Array constructor
102
+ simdutf_really_inline simd16(const uint16_t *values) : simd16(load(values)) {}
103
+ simdutf_really_inline simd16(const char16_t *values)
104
+ : simd16(load(reinterpret_cast<const uint16_t *>(values))) {}
105
+
106
+ // Order-specific operations
107
+ simdutf_really_inline simd16<uint16_t>
108
+ max_val(const simd16<uint16_t> other) const {
109
+ return _mm256_max_epu16(*this, other);
110
+ }
111
+ simdutf_really_inline simd16<uint16_t>
112
+ min_val(const simd16<uint16_t> other) const {
113
+ return _mm256_min_epu16(*this, other);
114
+ }
115
+ // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
116
+ simdutf_really_inline simd16<bool>
117
+ operator<=(const simd16<uint16_t> other) const {
118
+ return other.max_val(*this) == other;
119
+ }
120
+ simdutf_really_inline simd16<bool>
121
+ operator>=(const simd16<uint16_t> other) const {
122
+ return other.min_val(*this) == other;
123
+ }
124
+
125
+ // Bit-specific operations
126
+ simdutf_really_inline simd16<bool> bits_not_set() const {
127
+ return *this == uint16_t(0);
128
+ }
129
+
130
+ simdutf_really_inline simd16<bool> any_bits_set() const {
131
+ return ~this->bits_not_set();
132
+ }
133
+
134
+ template <int N> simdutf_really_inline simd16<uint16_t> shr() const {
135
+ return simd16<uint16_t>(_mm256_srli_epi16(*this, N));
136
+ }
137
+
138
+ // Change the endianness
139
+ simdutf_really_inline simd16<uint16_t> swap_bytes() const {
140
+ const __m256i swap = _mm256_setr_epi8(
141
+ 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18,
142
+ 21, 20, 23, 22, 25, 24, 27, 26, 29, 28, 31, 30);
143
+ return _mm256_shuffle_epi8(*this, swap);
144
+ }
145
+
146
+ // Pack with the unsigned saturation of two uint16_t code units into single
147
+ // uint8_t vector
148
+ static simdutf_really_inline simd8<uint8_t> pack(const simd16<uint16_t> &v0,
149
+ const simd16<uint16_t> &v1) {
150
+ // Note: the AVX2 variant of pack operates on 128-bit lanes, thus
151
+ // we have to shuffle lanes in order to produce bytes in the
152
+ // correct order.
153
+
154
+ // get the 0th lanes
155
+ const __m128i lo_0 = _mm256_extracti128_si256(v0, 0);
156
+ const __m128i lo_1 = _mm256_extracti128_si256(v1, 0);
157
+
158
+ // get the 1st lanes
159
+ const __m128i hi_0 = _mm256_extracti128_si256(v0, 1);
160
+ const __m128i hi_1 = _mm256_extracti128_si256(v1, 1);
161
+
162
+ // build new vectors (shuffle lanes)
163
+ const __m256i t0 = _mm256_set_m128i(lo_1, lo_0);
164
+ const __m256i t1 = _mm256_set_m128i(hi_1, hi_0);
165
+
166
+ // pack code units in linear order from v0 and v1
167
+ return _mm256_packus_epi16(t0, t1);
168
+ }
169
+
170
+ simdutf_really_inline uint64_t sum() const {
171
+ const auto lo_u16 = _mm256_and_si256(value, _mm256_set1_epi32(0x0000ffff));
172
+ const auto hi_u16 = _mm256_srli_epi32(value, 16);
173
+ const auto sum_u32 = _mm256_add_epi32(lo_u16, hi_u16);
174
+
175
+ const auto lo_u32 =
176
+ _mm256_and_si256(sum_u32, _mm256_set1_epi64x(0xffffffff));
177
+ const auto hi_u32 = _mm256_srli_epi64(sum_u32, 32);
178
+ const auto sum_u64 = _mm256_add_epi64(lo_u32, hi_u32);
179
+
180
+ return uint64_t(_mm256_extract_epi64(sum_u64, 0)) +
181
+ uint64_t(_mm256_extract_epi64(sum_u64, 1)) +
182
+ uint64_t(_mm256_extract_epi64(sum_u64, 2)) +
183
+ uint64_t(_mm256_extract_epi64(sum_u64, 3));
184
+ }
185
+ };
186
+
187
+ template <typename T> struct simd16x32 {
188
+ static constexpr int NUM_CHUNKS = 64 / sizeof(simd16<T>);
189
+ static_assert(NUM_CHUNKS == 2,
190
+ "Haswell kernel should use two registers per 64-byte block.");
191
+ simd16<T> chunks[NUM_CHUNKS];
192
+
193
+ simd16x32(const simd16x32<T> &o) = delete; // no copy allowed
194
+ simd16x32<T> &
195
+ operator=(const simd16<T> other) = delete; // no assignment allowed
196
+ simd16x32() = delete; // no default constructor allowed
197
+
198
+ simdutf_really_inline simd16x32(const simd16<T> chunk0,
199
+ const simd16<T> chunk1)
200
+ : chunks{chunk0, chunk1} {}
201
+ simdutf_really_inline simd16x32(const T *ptr)
202
+ : chunks{simd16<T>::load(ptr),
203
+ simd16<T>::load(ptr + sizeof(simd16<T>) / sizeof(T))} {}
204
+
205
+ simdutf_really_inline void store(T *ptr) const {
206
+ this->chunks[0].store(ptr + sizeof(simd16<T>) * 0 / sizeof(T));
207
+ this->chunks[1].store(ptr + sizeof(simd16<T>) * 1 / sizeof(T));
208
+ }
209
+
210
+ simdutf_really_inline uint64_t to_bitmask() const {
211
+ uint64_t r_lo = uint32_t(this->chunks[0].to_bitmask());
212
+ uint64_t r_hi = this->chunks[1].to_bitmask();
213
+ return r_lo | (r_hi << 32);
214
+ }
215
+
216
+ simdutf_really_inline simd16<T> reduce_or() const {
217
+ return this->chunks[0] | this->chunks[1];
218
+ }
219
+
220
+ simdutf_really_inline bool is_ascii() const {
221
+ return this->reduce_or().is_ascii();
222
+ }
223
+
224
+ simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
225
+ this->chunks[0].store_ascii_as_utf16(ptr + sizeof(simd16<T>) * 0);
226
+ this->chunks[1].store_ascii_as_utf16(ptr + sizeof(simd16<T>));
227
+ }
228
+
229
+ simdutf_really_inline void swap_bytes() {
230
+ this->chunks[0] = this->chunks[0].swap_bytes();
231
+ this->chunks[1] = this->chunks[1].swap_bytes();
232
+ }
233
+ simdutf_really_inline uint64_t gt(const T m) const {
234
+ const simd16<T> mask = simd16<T>::splat(m);
235
+ return simd16x32<bool>(this->chunks[0] > mask, this->chunks[1] > mask)
236
+ .to_bitmask();
237
+ }
238
+
239
+ simdutf_really_inline uint64_t lteq(const T m) const {
240
+ const simd16<T> mask = simd16<T>::splat(m);
241
+ return simd16x32<bool>(this->chunks[0] <= mask, this->chunks[1] <= mask)
242
+ .to_bitmask();
243
+ }
244
+ simdutf_really_inline uint64_t eq(const T m) const {
245
+ const simd16<T> mask = simd16<T>::splat(m);
246
+ return simd16x32<bool>(this->chunks[0] == mask, this->chunks[1] == mask)
247
+ .to_bitmask();
248
+ }
249
+ simdutf_really_inline uint64_t not_in_range(const T low, const T high) const {
250
+ const simd16<T> mask_low = simd16<T>::splat(static_cast<T>(low - 1));
251
+ const simd16<T> mask_high = simd16<T>::splat(static_cast<T>(high + 1));
252
+ return simd16x32<bool>(
253
+ (this->chunks[0] >= mask_high) | (this->chunks[0] <= mask_low),
254
+ (this->chunks[1] >= mask_high) | (this->chunks[1] <= mask_low))
255
+ .to_bitmask();
256
+ }
257
+ }; // struct simd16x32<T>
258
+
259
+ simd16<uint16_t> min(const simd16<uint16_t> a, simd16<uint16_t> b) {
260
+ return _mm256_min_epu16(a.value, b.value);
261
+ }