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,618 @@
1
+ // file included directly
2
+
3
+ template <typename T> struct base8 {
4
+ using vector_type = vector_u8_type_for_element<T>;
5
+ vector_type value;
6
+ static const int SIZE = sizeof(vector_type);
7
+ static const int ELEMENTS = sizeof(vector_type) / sizeof(T);
8
+
9
+ // Zero constructor
10
+ simdutf_really_inline base8() : value{vec_splats(T(0))} {}
11
+
12
+ // Conversion from SIMD register
13
+ simdutf_really_inline base8(const vector_type _value) : value{_value} {}
14
+
15
+ // Splat scalar
16
+ simdutf_really_inline base8(T v) : value{vec_splats(v)} {}
17
+
18
+ // Conversion to SIMD register
19
+ simdutf_really_inline operator const vector_type &() const {
20
+ return this->value;
21
+ }
22
+
23
+ template <typename U> simdutf_really_inline void store(U *ptr) const {
24
+ vec_xst(value, 0, reinterpret_cast<T *>(ptr));
25
+ }
26
+
27
+ template <typename SIMD8> void operator|=(const SIMD8 other) {
28
+ this->value = vec_or(this->value, other.value);
29
+ }
30
+
31
+ template <int N = 1> vector_type prev_aux(vector_type prev_chunk) const {
32
+ vector_type chunk = this->value;
33
+ #if !SIMDUTF_IS_BIG_ENDIAN
34
+ chunk = (vector_type)vec_reve(this->value);
35
+ prev_chunk = (vector_type)vec_reve((vector_type)prev_chunk);
36
+ #endif
37
+ chunk = (vector_type)vec_sld((vector_type)prev_chunk, (vector_type)chunk,
38
+ 16 - N);
39
+ #if !SIMDUTF_IS_BIG_ENDIAN
40
+ chunk = (vector_type)vec_reve((vector_type)chunk);
41
+ #endif
42
+ return chunk;
43
+ }
44
+
45
+ simdutf_really_inline bool is_ascii() const {
46
+ return move_mask_u8(this->value) == 0;
47
+ }
48
+
49
+ simdutf_really_inline uint16_t to_bitmask() const {
50
+ return move_mask_u8(value);
51
+ }
52
+
53
+ template <endianness big_endian>
54
+ simdutf_really_inline void store_bytes_as_utf16(char16_t *p) const {
55
+ const vector_type zero = vec_splats(T(0));
56
+
57
+ if (big_endian) {
58
+ const vec_u8_t perm_lo = {16, 0, 16, 1, 16, 2, 16, 3,
59
+ 16, 4, 16, 5, 16, 6, 16, 7};
60
+ const vec_u8_t perm_hi = {16, 8, 16, 9, 16, 10, 16, 11,
61
+ 16, 12, 16, 13, 16, 14, 16, 15};
62
+
63
+ const vector_type v0 = vec_perm(value, zero, perm_lo);
64
+ const vector_type v1 = vec_perm(value, zero, perm_hi);
65
+
66
+ #if defined(__clang__)
67
+ vec_xst(v0, 0, reinterpret_cast<T *>(p));
68
+ vec_xst(v1, 16, reinterpret_cast<T *>(p));
69
+ #else
70
+ vec_xst(v0, 0, reinterpret_cast<vector_type *>(p));
71
+ vec_xst(v1, 16, reinterpret_cast<vector_type *>(p));
72
+ #endif // defined(__clang__)
73
+ } else {
74
+ const vec_u8_t perm_lo = {0, 16, 1, 16, 2, 16, 3, 16,
75
+ 4, 16, 5, 16, 6, 16, 7, 16};
76
+ const vec_u8_t perm_hi = {8, 16, 9, 16, 10, 16, 11, 16,
77
+ 12, 16, 13, 16, 14, 16, 15, 16};
78
+
79
+ const vector_type v0 = vec_perm(value, zero, perm_lo);
80
+ const vector_type v1 = vec_perm(value, zero, perm_hi);
81
+
82
+ #if defined(__clang__)
83
+ vec_xst(v0, 0, reinterpret_cast<T *>(p));
84
+ vec_xst(v1, 16, reinterpret_cast<T *>(p));
85
+ #else
86
+ vec_xst(v0, 0, reinterpret_cast<vector_type *>(p));
87
+ vec_xst(v1, 16, reinterpret_cast<vector_type *>(p));
88
+ #endif // defined(__clang__)
89
+ }
90
+ }
91
+
92
+ template <endianness big_endian>
93
+ simdutf_really_inline void store_ascii_as_utf16(char16_t *p) const {
94
+ store_bytes_as_utf16<big_endian>(p);
95
+ }
96
+
97
+ simdutf_really_inline void store_bytes_as_utf32(char32_t *p) const {
98
+ const vector_type zero = vec_splats(T(0));
99
+
100
+ #if SIMDUTF_IS_BIG_ENDIAN
101
+ const vec_u8_t perm0 = {16, 16, 16, 0, 16, 16, 16, 1,
102
+ 16, 16, 16, 2, 16, 16, 16, 3};
103
+
104
+ const vec_u8_t perm1 = {16, 16, 16, 4, 16, 16, 16, 5,
105
+ 16, 16, 16, 6, 16, 16, 16, 7};
106
+
107
+ const vec_u8_t perm2 = {16, 16, 16, 8, 16, 16, 16, 9,
108
+ 16, 16, 16, 10, 16, 16, 16, 11};
109
+
110
+ const vec_u8_t perm3 = {16, 16, 16, 12, 16, 16, 16, 13,
111
+ 16, 16, 16, 14, 16, 16, 16, 15};
112
+ #else
113
+ const vec_u8_t perm0 = {0, 16, 16, 16, 1, 16, 16, 16,
114
+ 2, 16, 16, 16, 3, 16, 16, 16};
115
+
116
+ const vec_u8_t perm1 = {4, 16, 16, 16, 5, 16, 16, 16,
117
+ 6, 16, 16, 16, 7, 16, 16, 16};
118
+
119
+ const vec_u8_t perm2 = {8, 16, 16, 16, 9, 16, 16, 16,
120
+ 10, 16, 16, 16, 11, 16, 16, 16};
121
+
122
+ const vec_u8_t perm3 = {12, 16, 16, 16, 13, 16, 16, 16,
123
+ 14, 16, 16, 16, 15, 16, 16, 16};
124
+ #endif // SIMDUTF_IS_BIG_ENDIAN
125
+
126
+ const vector_type v0 = vec_perm(value, zero, perm0);
127
+ const vector_type v1 = vec_perm(value, zero, perm1);
128
+ const vector_type v2 = vec_perm(value, zero, perm2);
129
+ const vector_type v3 = vec_perm(value, zero, perm3);
130
+
131
+ constexpr size_t n = base8<T>::SIZE;
132
+
133
+ #if defined(__clang__)
134
+ vec_xst(v0, 0 * n, reinterpret_cast<T *>(p));
135
+ vec_xst(v1, 1 * n, reinterpret_cast<T *>(p));
136
+ vec_xst(v2, 2 * n, reinterpret_cast<T *>(p));
137
+ vec_xst(v3, 3 * n, reinterpret_cast<T *>(p));
138
+ #else
139
+ vec_xst(v0, 0 * n, reinterpret_cast<vector_type *>(p));
140
+ vec_xst(v1, 1 * n, reinterpret_cast<vector_type *>(p));
141
+ vec_xst(v2, 2 * n, reinterpret_cast<vector_type *>(p));
142
+ vec_xst(v3, 3 * n, reinterpret_cast<vector_type *>(p));
143
+ #endif // defined(__clang__)
144
+ }
145
+
146
+ simdutf_really_inline void store_words_as_utf32(char32_t *p) const {
147
+ const vector_type zero = vec_splats(T(0));
148
+
149
+ #if SIMDUTF_IS_BIG_ENDIAN
150
+ const vec_u8_t perm0 = {16, 16, 0, 1, 16, 16, 2, 3,
151
+ 16, 16, 4, 5, 16, 16, 6, 7};
152
+ const vec_u8_t perm1 = {16, 16, 8, 9, 16, 16, 10, 11,
153
+ 16, 16, 12, 13, 16, 16, 14, 15};
154
+ #else
155
+ const vec_u8_t perm0 = {0, 1, 16, 16, 2, 3, 16, 16,
156
+ 4, 5, 16, 16, 6, 7, 16, 16};
157
+ const vec_u8_t perm1 = {8, 9, 16, 16, 10, 11, 16, 16,
158
+ 12, 13, 16, 16, 14, 15, 16, 16};
159
+ #endif // SIMDUTF_IS_BIG_ENDIAN
160
+
161
+ const vector_type v0 = vec_perm(value, zero, perm0);
162
+ const vector_type v1 = vec_perm(value, zero, perm1);
163
+
164
+ constexpr size_t n = base8<T>::SIZE;
165
+
166
+ #if defined(__clang__)
167
+ vec_xst(v0, 0 * n, reinterpret_cast<T *>(p));
168
+ vec_xst(v1, 1 * n, reinterpret_cast<T *>(p));
169
+ #else
170
+ vec_xst(v0, 0 * n, reinterpret_cast<vector_type *>(p));
171
+ vec_xst(v1, 1 * n, reinterpret_cast<vector_type *>(p));
172
+ #endif // defined(__clang__)
173
+ }
174
+
175
+ simdutf_really_inline void store_ascii_as_utf32(char32_t *p) const {
176
+ store_bytes_as_utf32(p);
177
+ }
178
+ };
179
+
180
+ // Forward declaration
181
+ template <typename T> struct simd8;
182
+
183
+ template <typename T>
184
+ simd8<bool> operator==(const simd8<T> a, const simd8<T> b);
185
+
186
+ template <typename T>
187
+ simd8<bool> operator!=(const simd8<T> a, const simd8<T> b);
188
+
189
+ template <typename T> simd8<T> operator&(const simd8<T> a, const simd8<T> b);
190
+
191
+ template <typename T> simd8<T> operator|(const simd8<T> a, const simd8<T> b);
192
+
193
+ template <typename T> simd8<T> operator^(const simd8<T> a, const simd8<T> b);
194
+
195
+ template <typename T> simd8<T> operator+(const simd8<T> a, const simd8<T> b);
196
+
197
+ template <typename T> simd8<bool> operator<(const simd8<T> a, const simd8<T> b);
198
+
199
+ // SIMD byte mask type (returned by things like eq and gt)
200
+ template <> struct simd8<bool> : base8<bool> {
201
+ using super = base8<bool>;
202
+
203
+ static simdutf_really_inline simd8<bool> splat(bool _value) {
204
+ return (vector_type)vec_splats((unsigned char)(-(!!_value)));
205
+ }
206
+
207
+ simdutf_really_inline simd8() : super(vector_type()) {}
208
+ simdutf_really_inline simd8(const vector_type _value) : super(_value) {}
209
+ // Splat constructor
210
+ simdutf_really_inline simd8(bool _value) : base8<bool>(splat(_value)) {}
211
+
212
+ template <typename T>
213
+ simdutf_really_inline simd8(simd8<T> other)
214
+ : simd8(vector_type(other.value)) {}
215
+
216
+ simdutf_really_inline uint16_t to_bitmask() const {
217
+ return move_mask_u8(value);
218
+ }
219
+
220
+ simdutf_really_inline bool any() const {
221
+ return !vec_all_eq(this->value, (vector_type)vec_splats(0));
222
+ }
223
+
224
+ simdutf_really_inline bool all() const { return to_bitmask() == 0xffff; }
225
+
226
+ simdutf_really_inline simd8<bool> operator~() const {
227
+ return this->value ^ (vector_type)splat(true);
228
+ }
229
+ };
230
+
231
+ template <typename T> struct base8_numeric : base8<T> {
232
+ using super = base8<T>;
233
+ using vector_type = typename super::vector_type;
234
+
235
+ static simdutf_really_inline simd8<T> splat(T value) {
236
+ return (vector_type)vec_splats(value);
237
+ }
238
+
239
+ static simdutf_really_inline simd8<T> zero() { return splat(0); }
240
+
241
+ template <typename U>
242
+ static simdutf_really_inline simd8<T> load(const U *values) {
243
+ return vec_xl(0, reinterpret_cast<const T *>(values));
244
+ }
245
+
246
+ // Repeat 16 values as many times as necessary (usually for lookup tables)
247
+ static simdutf_really_inline simd8<T> repeat_16(T v0, T v1, T v2, T v3, T v4,
248
+ T v5, T v6, T v7, T v8, T v9,
249
+ T v10, T v11, T v12, T v13,
250
+ T v14, T v15) {
251
+ return simd8<T>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
252
+ v14, v15);
253
+ }
254
+
255
+ simdutf_really_inline base8_numeric() : base8<T>() {}
256
+ simdutf_really_inline base8_numeric(const vector_type _value)
257
+ : base8<T>(_value) {}
258
+
259
+ // Override to distinguish from bool version
260
+ simdutf_really_inline simd8<T> operator~() const { return *this ^ 0xFFu; }
261
+
262
+ simdutf_really_inline simd8<T> &operator-=(const simd8<T> other) {
263
+ this->value = vec_sub(this->value, other.value);
264
+ return *static_cast<simd8<T> *>(this);
265
+ }
266
+
267
+ // Perform a lookup assuming the value is between 0 and 16 (undefined behavior
268
+ // for out of range values)
269
+ template <typename L>
270
+ simdutf_really_inline simd8<L> lookup_16(simd8<L> lookup_table) const {
271
+ return (vector_type)vec_perm((vector_type)lookup_table,
272
+ (vector_type)lookup_table, this->value);
273
+ }
274
+
275
+ template <typename L>
276
+ simdutf_really_inline simd8<L>
277
+ lookup_32(const simd8<L> lookup_table_lo,
278
+ const simd8<L> lookup_table_hi) const {
279
+ return (vector_type)vec_perm(lookup_table_lo.value, lookup_table_hi.value,
280
+ this->value);
281
+ }
282
+
283
+ template <typename L>
284
+ simdutf_really_inline simd8<L>
285
+ lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
286
+ L replace5, L replace6, L replace7, L replace8, L replace9,
287
+ L replace10, L replace11, L replace12, L replace13, L replace14,
288
+ L replace15) const {
289
+ return lookup_16(simd8<L>::repeat_16(
290
+ replace0, replace1, replace2, replace3, replace4, replace5, replace6,
291
+ replace7, replace8, replace9, replace10, replace11, replace12,
292
+ replace13, replace14, replace15));
293
+ }
294
+ };
295
+
296
+ // Unsigned bytes
297
+ template <> struct simd8<uint8_t> : base8_numeric<uint8_t> {
298
+ using Self = simd8<uint8_t>;
299
+
300
+ simdutf_really_inline simd8() : base8_numeric<uint8_t>() {}
301
+ simdutf_really_inline simd8(const vector_type _value)
302
+ : base8_numeric<uint8_t>(_value) {}
303
+ // Splat constructor
304
+ simdutf_really_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
305
+ // Array constructor
306
+ simdutf_really_inline simd8(const uint8_t *values) : simd8(load(values)) {}
307
+ // Member-by-member initialization
308
+ simdutf_really_inline
309
+ simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
310
+ uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
311
+ uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
312
+ : simd8((vector_type){v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
313
+ v12, v13, v14, v15}) {}
314
+ // Repeat 16 values as many times as necessary (usually for lookup tables)
315
+ simdutf_really_inline static simd8<uint8_t>
316
+ repeat_16(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4,
317
+ uint8_t v5, uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9,
318
+ uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14,
319
+ uint8_t v15) {
320
+ return simd8<uint8_t>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
321
+ v13, v14, v15);
322
+ }
323
+
324
+ simdutf_really_inline bool is_ascii() const {
325
+ return move_mask_u8(this->value) == 0;
326
+ }
327
+
328
+ template <typename T>
329
+ simdutf_really_inline simd8(simd8<T> other)
330
+ : simd8(vector_type(other.value)) {}
331
+
332
+ template <int N>
333
+ simdutf_really_inline Self prev(const Self prev_chunk) const {
334
+ return prev_aux<N>(prev_chunk.value);
335
+ }
336
+
337
+ // Saturated math
338
+ simdutf_really_inline simd8<uint8_t>
339
+ saturating_sub(const simd8<uint8_t> other) const {
340
+ return (vector_type)vec_subs(this->value, (vector_type)other);
341
+ }
342
+
343
+ // Same as >, but only guarantees true is nonzero (< guarantees true = -1)
344
+ simdutf_really_inline simd8<uint8_t>
345
+ gt_bits(const simd8<uint8_t> other) const {
346
+ return this->saturating_sub(other);
347
+ }
348
+
349
+ // Same as <, but only guarantees true is nonzero (< guarantees true = -1)
350
+ simdutf_really_inline simd8<uint8_t>
351
+ lt_bits(const simd8<uint8_t> other) const {
352
+ return other.saturating_sub(*this);
353
+ }
354
+
355
+ // Bit-specific operations
356
+ simdutf_really_inline bool bits_not_set_anywhere() const {
357
+ return vec_all_eq(this->value, (vector_type)vec_splats(0));
358
+ }
359
+
360
+ simdutf_really_inline bool any_bits_set_anywhere() const {
361
+ return !bits_not_set_anywhere();
362
+ }
363
+
364
+ template <int N> simdutf_really_inline simd8<uint8_t> shr() const {
365
+ return simd8<uint8_t>(
366
+ (vector_type)vec_sr(this->value, (vector_type)vec_splat_u8(N)));
367
+ }
368
+
369
+ template <int N> simdutf_really_inline simd8<uint8_t> shl() const {
370
+ return simd8<uint8_t>(
371
+ (vector_type)vec_sl(this->value, (vector_type)vec_splat_u8(N)));
372
+ }
373
+ void dump() const {
374
+ #ifdef SIMDUTF_LOGGING
375
+ uint8_t tmp[16];
376
+ store(tmp);
377
+ for (int i = 0; i < 16; i++) {
378
+ if (i == 0) {
379
+ printf("[%02x", tmp[i]);
380
+ } else if (i == 15) {
381
+ printf(" %02x]", tmp[i]);
382
+ } else {
383
+ printf(" %02x", tmp[i]);
384
+ }
385
+ }
386
+ putchar('\n');
387
+ #endif // SIMDUTF_LOGGING
388
+ }
389
+
390
+ void dump_ascii() const {
391
+ #ifdef SIMDUTF_LOGGING
392
+ uint8_t tmp[16];
393
+ store(tmp);
394
+ for (int i = 0; i < 16; i++) {
395
+ if (i == 0) {
396
+ printf("[%c", tmp[i]);
397
+ } else if (i == 15) {
398
+ printf("%c]", tmp[i]);
399
+ } else {
400
+ printf("%c", tmp[i]);
401
+ }
402
+ }
403
+ putchar('\n');
404
+ #endif // SIMDUTF_LOGGING
405
+ }
406
+ };
407
+
408
+ // Signed bytes
409
+ template <> struct simd8<int8_t> : base8_numeric<int8_t> {
410
+ simdutf_really_inline simd8() : base8_numeric<int8_t>() {}
411
+ simdutf_really_inline simd8(const vector_type _value)
412
+ : base8_numeric<int8_t>(_value) {}
413
+
414
+ template <typename T>
415
+ simdutf_really_inline simd8(simd8<T> other)
416
+ : simd8(vector_type(other.value)) {}
417
+
418
+ // Splat constructor
419
+ simdutf_really_inline simd8(int8_t _value) : simd8(splat(_value)) {}
420
+ // Array constructor
421
+ simdutf_really_inline simd8(const int8_t *values) : simd8(load(values)) {}
422
+
423
+ simdutf_really_inline operator simd8<uint8_t>() const;
424
+
425
+ // Saturated math
426
+ simdutf_really_inline simd8<int8_t>
427
+ saturating_add(const simd8<int8_t> other) const {
428
+ return (vector_type)vec_adds(this->value, other.value);
429
+ }
430
+
431
+ void dump() const {
432
+ int8_t tmp[16];
433
+ store(tmp);
434
+ for (int i = 0; i < 16; i++) {
435
+ if (i == 0) {
436
+ printf("[%02x", tmp[i]);
437
+ } else if (i == 15) {
438
+ printf("%02x]", tmp[i]);
439
+ } else {
440
+ printf("%02x", tmp[i]);
441
+ }
442
+ }
443
+ putchar('\n');
444
+ }
445
+ };
446
+
447
+ template <typename T>
448
+ simd8<bool> operator==(const simd8<T> a, const simd8<T> b) {
449
+ return vec_cmpeq(a.value, b.value);
450
+ }
451
+
452
+ template <typename T>
453
+ simd8<bool> operator!=(const simd8<T> a, const simd8<T> b) {
454
+ return vec_cmpne(a.value, b.value);
455
+ }
456
+
457
+ template <typename T> simd8<T> operator&(const simd8<T> a, const simd8<T> b) {
458
+ return vec_and(a.value, b.value);
459
+ }
460
+
461
+ template <typename T, typename U> simd8<T> operator&(const simd8<T> a, U b) {
462
+ return vec_and(a.value, vec_splats(T(b)));
463
+ }
464
+
465
+ template <typename T> simd8<T> operator|(const simd8<T> a, const simd8<T> b) {
466
+ return vec_or(a.value, b.value);
467
+ }
468
+
469
+ template <typename T> simd8<T> operator^(const simd8<T> a, const simd8<T> b) {
470
+ return vec_xor(a.value, b.value);
471
+ }
472
+
473
+ template <typename T, typename U> simd8<T> operator^(const simd8<T> a, U b) {
474
+ return vec_xor(a.value, vec_splats(T(b)));
475
+ }
476
+
477
+ template <typename T> simd8<T> operator+(const simd8<T> a, const simd8<T> b) {
478
+ return vec_add(a.value, b.value);
479
+ }
480
+
481
+ template <typename T, typename U> simd8<T> operator+(const simd8<T> a, U b) {
482
+ return vec_add(a.value, vec_splats(T(b)));
483
+ }
484
+
485
+ simdutf_really_inline simd8<int8_t>::operator simd8<uint8_t>() const {
486
+ return (simd8<uint8_t>::vector_type)value;
487
+ }
488
+
489
+ template <typename T>
490
+ simd8<bool> operator<(const simd8<T> a, const simd8<T> b) {
491
+ return vec_cmplt(a.value, b.value);
492
+ }
493
+
494
+ template <typename T>
495
+ simd8<bool> operator>(const simd8<T> a, const simd8<T> b) {
496
+ return vec_cmpgt(a.value, b.value);
497
+ }
498
+
499
+ template <typename T>
500
+ simd8<bool> operator>=(const simd8<T> a, const simd8<T> b) {
501
+ return vec_cmpge(a.value, b.value);
502
+ }
503
+
504
+ template <typename T> struct simd8x64 {
505
+ static constexpr int NUM_CHUNKS = 64 / sizeof(simd8<T>);
506
+ static constexpr size_t ELEMENTS = simd8<T>::ELEMENTS;
507
+
508
+ static_assert(NUM_CHUNKS == 4,
509
+ "PPC64 kernel should use four registers per 64-byte block.");
510
+ simd8<T> chunks[NUM_CHUNKS];
511
+
512
+ simd8x64(const simd8x64<T> &o) = delete; // no copy allowed
513
+ simd8x64<T> &
514
+ operator=(const simd8<T> other) = delete; // no assignment allowed
515
+ simd8x64() = delete; // no default constructor allowed
516
+ simd8x64(simd8x64<T> &&) = default;
517
+
518
+ simdutf_really_inline simd8x64(const simd8<T> chunk0, const simd8<T> chunk1,
519
+ const simd8<T> chunk2, const simd8<T> chunk3)
520
+ : chunks{chunk0, chunk1, chunk2, chunk3} {}
521
+ simdutf_really_inline simd8x64(const T *ptr)
522
+ : chunks{simd8<T>::load(ptr),
523
+ simd8<T>::load(ptr + sizeof(simd8<T>) / sizeof(T)),
524
+ simd8<T>::load(ptr + 2 * sizeof(simd8<T>) / sizeof(T)),
525
+ simd8<T>::load(ptr + 3 * sizeof(simd8<T>) / sizeof(T))} {}
526
+
527
+ simdutf_really_inline void store(T *ptr) const {
528
+ this->chunks[0].store(ptr + ELEMENTS * 0);
529
+ this->chunks[1].store(ptr + ELEMENTS * 1);
530
+ this->chunks[2].store(ptr + ELEMENTS * 2);
531
+ this->chunks[3].store(ptr + ELEMENTS * 3);
532
+ }
533
+
534
+ simdutf_really_inline simd8x64<T> &operator|=(const simd8x64<T> &other) {
535
+ this->chunks[0] |= other.chunks[0];
536
+ this->chunks[1] |= other.chunks[1];
537
+ this->chunks[2] |= other.chunks[2];
538
+ this->chunks[3] |= other.chunks[3];
539
+ return *this;
540
+ }
541
+
542
+ simdutf_really_inline simd8<T> reduce_or() const {
543
+ return (this->chunks[0] | this->chunks[1]) |
544
+ (this->chunks[2] | this->chunks[3]);
545
+ }
546
+
547
+ simdutf_really_inline bool is_ascii() const {
548
+ return this->reduce_or().is_ascii();
549
+ }
550
+
551
+ template <endianness endian>
552
+ simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
553
+ this->chunks[0].template store_ascii_as_utf16<endian>(ptr +
554
+ sizeof(simd8<T>) * 0);
555
+ this->chunks[1].template store_ascii_as_utf16<endian>(ptr +
556
+ sizeof(simd8<T>) * 1);
557
+ this->chunks[2].template store_ascii_as_utf16<endian>(ptr +
558
+ sizeof(simd8<T>) * 2);
559
+ this->chunks[3].template store_ascii_as_utf16<endian>(ptr +
560
+ sizeof(simd8<T>) * 3);
561
+ }
562
+
563
+ simdutf_really_inline void store_ascii_as_utf32(char32_t *ptr) const {
564
+ this->chunks[0].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 0);
565
+ this->chunks[1].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 1);
566
+ this->chunks[2].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 2);
567
+ this->chunks[3].store_ascii_as_utf32(ptr + sizeof(simd8<T>) * 3);
568
+ }
569
+
570
+ simdutf_really_inline uint64_t to_bitmask() const {
571
+ uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
572
+ uint64_t r1 = this->chunks[1].to_bitmask();
573
+ uint64_t r2 = this->chunks[2].to_bitmask();
574
+ uint64_t r3 = this->chunks[3].to_bitmask();
575
+ return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
576
+ }
577
+
578
+ simdutf_really_inline uint64_t lt(const T m) const {
579
+ const simd8<T> mask = simd8<T>::splat(m);
580
+ return simd8x64<bool>(this->chunks[0] < mask, this->chunks[1] < mask,
581
+ this->chunks[2] < mask, this->chunks[3] < mask)
582
+ .to_bitmask();
583
+ }
584
+
585
+ simdutf_really_inline uint64_t gt(const T m) const {
586
+ const simd8<T> mask = simd8<T>::splat(m);
587
+ return simd8x64<bool>(this->chunks[0] > mask, this->chunks[1] > mask,
588
+ this->chunks[2] > mask, this->chunks[3] > mask)
589
+ .to_bitmask();
590
+ }
591
+ simdutf_really_inline uint64_t eq(const T m) const {
592
+ const simd8<T> mask = simd8<T>::splat(m);
593
+ return simd8x64<bool>(this->chunks[0] == mask, this->chunks[1] == mask,
594
+ this->chunks[2] == mask, this->chunks[3] == mask)
595
+ .to_bitmask();
596
+ }
597
+ simdutf_really_inline uint64_t gteq_unsigned(const uint8_t m) const {
598
+ const simd8<uint8_t> mask = simd8<uint8_t>::splat(m);
599
+ return simd8x64<bool>(simd8<uint8_t>(this->chunks[0]) >= mask,
600
+ simd8<uint8_t>(this->chunks[1]) >= mask,
601
+ simd8<uint8_t>(this->chunks[2]) >= mask,
602
+ simd8<uint8_t>(this->chunks[3]) >= mask)
603
+ .to_bitmask();
604
+ }
605
+
606
+ void dump() const {
607
+ puts("");
608
+ for (int i = 0; i < 4; i++) {
609
+ printf("chunk[%d] = ", i);
610
+ this->chunks[i].dump();
611
+ }
612
+ }
613
+ }; // struct simd8x64<T>
614
+
615
+ simdutf_really_inline simd8<uint8_t> avg(const simd8<uint8_t> a,
616
+ const simd8<uint8_t> b) {
617
+ return vec_avg(a.value, b.value);
618
+ }
@@ -0,0 +1,40 @@
1
+ #ifndef SIMDUTF_PPC64_H
2
+ #define SIMDUTF_PPC64_H
3
+
4
+ #ifdef SIMDUTF_FALLBACK_H
5
+ #error "ppc64.h must be included before fallback.h"
6
+ #endif
7
+
8
+ #include "simdutf/portability.h"
9
+
10
+ #ifndef SIMDUTF_IMPLEMENTATION_PPC64
11
+ #define SIMDUTF_IMPLEMENTATION_PPC64 (SIMDUTF_IS_PPC64)
12
+ #endif
13
+ #define SIMDUTF_CAN_ALWAYS_RUN_PPC64 \
14
+ SIMDUTF_IMPLEMENTATION_PPC64 &&SIMDUTF_IS_PPC64
15
+
16
+ #include "simdutf/internal/isadetection.h"
17
+
18
+ #if SIMDUTF_IMPLEMENTATION_PPC64
19
+
20
+ namespace simdutf {
21
+ /**
22
+ * Implementation for ALTIVEC (PPC64).
23
+ */
24
+ namespace ppc64 {} // namespace ppc64
25
+ } // namespace simdutf
26
+
27
+ #include "simdutf/ppc64/implementation.h"
28
+
29
+ #include "simdutf/ppc64/begin.h"
30
+
31
+ // Declarations
32
+ #include "simdutf/ppc64/intrinsics.h"
33
+ #include "simdutf/ppc64/bitmanipulation.h"
34
+ #include "simdutf/ppc64/simd.h"
35
+
36
+ #include "simdutf/ppc64/end.h"
37
+
38
+ #endif // SIMDUTF_IMPLEMENTATION_PPC64
39
+
40
+ #endif // SIMDUTF_PPC64_H
@@ -0,0 +1,7 @@
1
+ #define SIMDUTF_IMPLEMENTATION rvv
2
+
3
+ #if SIMDUTF_CAN_ALWAYS_RUN_RVV
4
+ // nothing needed.
5
+ #else
6
+ SIMDUTF_TARGET_RVV
7
+ #endif
@@ -0,0 +1,7 @@
1
+ #if SIMDUTF_CAN_ALWAYS_RUN_RVV
2
+ // nothing needed.
3
+ #else
4
+ SIMDUTF_UNTARGET_REGION
5
+ #endif
6
+
7
+ #undef SIMDUTF_IMPLEMENTATION