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,310 @@
1
+ #ifndef SIMDUTF_LASX_IMPLEMENTATION_H
2
+ #define SIMDUTF_LASX_IMPLEMENTATION_H
3
+
4
+ #include "simdutf.h"
5
+ #include "simdutf/internal/isadetection.h"
6
+
7
+ namespace simdutf {
8
+ namespace lasx {
9
+
10
+ namespace {
11
+ using namespace simdutf;
12
+ }
13
+
14
+ class implementation final : public simdutf::implementation {
15
+ public:
16
+ simdutf_really_inline implementation()
17
+ : simdutf::implementation("lasx", "LOONGARCH ASX",
18
+ internal::instruction_set::LSX |
19
+ internal::instruction_set::LASX) {}
20
+ #if SIMDUTF_FEATURE_DETECT_ENCODING
21
+ simdutf_warn_unused int detect_encodings(const char *input,
22
+ size_t length) const noexcept final;
23
+ #endif // SIMDUTF_FEATURE_DETECT_ENCODING
24
+ #if SIMDUTF_FEATURE_UTF8 || SIMDUTF_FEATURE_DETECT_ENCODING
25
+ simdutf_warn_unused bool validate_utf8(const char *buf,
26
+ size_t len) const noexcept final;
27
+ #endif // SIMDUTF_FEATURE_UTF8 || SIMDUTF_FEATURE_DETECT_ENCODING
28
+ #if SIMDUTF_FEATURE_UTF8
29
+ simdutf_warn_unused result
30
+ validate_utf8_with_errors(const char *buf, size_t len) const noexcept final;
31
+ #endif // SIMDUTF_FEATURE_UTF8
32
+ #if SIMDUTF_FEATURE_ASCII
33
+ simdutf_warn_unused bool validate_ascii(const char *buf,
34
+ size_t len) const noexcept final;
35
+ simdutf_warn_unused result
36
+ validate_ascii_with_errors(const char *buf, size_t len) const noexcept final;
37
+ #endif // SIMDUTF_FEATURE_ASCII
38
+
39
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_ASCII
40
+ simdutf_warn_unused bool
41
+ validate_utf16le_as_ascii(const char16_t *buf,
42
+ size_t len) const noexcept final;
43
+
44
+ simdutf_warn_unused bool
45
+ validate_utf16be_as_ascii(const char16_t *buf,
46
+ size_t len) const noexcept final;
47
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_ASCII
48
+
49
+ #if SIMDUTF_FEATURE_UTF16 || SIMDUTF_FEATURE_DETECT_ENCODING
50
+ simdutf_warn_unused bool validate_utf16le(const char16_t *buf,
51
+ size_t len) const noexcept final;
52
+ #endif // SIMDUTF_FEATURE_UTF16 || SIMDUTF_FEATURE_DETECT_ENCODING
53
+ #if SIMDUTF_FEATURE_UTF16
54
+ simdutf_warn_unused bool validate_utf16be(const char16_t *buf,
55
+ size_t len) const noexcept final;
56
+ simdutf_warn_unused result validate_utf16le_with_errors(
57
+ const char16_t *buf, size_t len) const noexcept final;
58
+ simdutf_warn_unused result validate_utf16be_with_errors(
59
+ const char16_t *buf, size_t len) const noexcept final;
60
+ void to_well_formed_utf16be(const char16_t *input, size_t len,
61
+ char16_t *output) const noexcept final;
62
+ void to_well_formed_utf16le(const char16_t *input, size_t len,
63
+ char16_t *output) const noexcept final;
64
+ #endif // SIMDUTF_FEATURE_UTF16
65
+ #if SIMDUTF_FEATURE_UTF32 || SIMDUTF_FEATURE_DETECT_ENCODING
66
+ simdutf_warn_unused bool validate_utf32(const char32_t *buf,
67
+ size_t len) const noexcept final;
68
+ #endif // SIMDUTF_FEATURE_UTF32 || SIMDUTF_FEATURE_DETECT_ENCODING
69
+ #if SIMDUTF_FEATURE_UTF32
70
+ simdutf_warn_unused result validate_utf32_with_errors(
71
+ const char32_t *buf, size_t len) const noexcept final;
72
+ #endif // SIMDUTF_FEATURE_UTF32
73
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
74
+ simdutf_warn_unused size_t convert_latin1_to_utf8(
75
+ const char *buf, size_t len, char *utf8_output) const noexcept final;
76
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
77
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
78
+ simdutf_warn_unused size_t convert_latin1_to_utf16le(
79
+ const char *buf, size_t len, char16_t *utf16_buffer) const noexcept final;
80
+ simdutf_warn_unused size_t convert_latin1_to_utf16be(
81
+ const char *buf, size_t len, char16_t *utf16_buffer) const noexcept final;
82
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
83
+ #if SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
84
+ simdutf_warn_unused size_t convert_latin1_to_utf32(
85
+ const char *buf, size_t len, char32_t *utf32_output) const noexcept final;
86
+ #endif // SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
87
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
88
+ simdutf_warn_unused size_t convert_utf8_to_latin1(
89
+ const char *buf, size_t len, char *latin1_output) const noexcept final;
90
+ simdutf_warn_unused result convert_utf8_to_latin1_with_errors(
91
+ const char *buf, size_t len, char *latin1_buffer) const noexcept final;
92
+ simdutf_warn_unused size_t convert_valid_utf8_to_latin1(
93
+ const char *buf, size_t len, char *latin1_output) const noexcept final;
94
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
95
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
96
+ simdutf_warn_unused size_t convert_utf8_to_utf16le(
97
+ const char *buf, size_t len, char16_t *utf16_output) const noexcept final;
98
+ simdutf_warn_unused size_t convert_utf8_to_utf16be(
99
+ const char *buf, size_t len, char16_t *utf16_output) const noexcept final;
100
+ simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(
101
+ const char *buf, size_t len, char16_t *utf16_output) const noexcept final;
102
+ simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(
103
+ const char *buf, size_t len, char16_t *utf16_output) const noexcept final;
104
+ simdutf_warn_unused size_t convert_valid_utf8_to_utf16le(
105
+ const char *buf, size_t len, char16_t *utf16_buffer) const noexcept final;
106
+ simdutf_warn_unused size_t convert_valid_utf8_to_utf16be(
107
+ const char *buf, size_t len, char16_t *utf16_buffer) const noexcept final;
108
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
109
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
110
+ simdutf_warn_unused size_t convert_utf8_to_utf32(
111
+ const char *buf, size_t len, char32_t *utf32_output) const noexcept final;
112
+ simdutf_warn_unused result convert_utf8_to_utf32_with_errors(
113
+ const char *buf, size_t len, char32_t *utf32_output) const noexcept final;
114
+ simdutf_warn_unused size_t convert_valid_utf8_to_utf32(
115
+ const char *buf, size_t len, char32_t *utf32_buffer) const noexcept final;
116
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
117
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
118
+ simdutf_warn_unused size_t
119
+ convert_utf16le_to_latin1(const char16_t *buf, size_t len,
120
+ char *latin1_buffer) const noexcept final;
121
+ simdutf_warn_unused size_t
122
+ convert_utf16be_to_latin1(const char16_t *buf, size_t len,
123
+ char *latin1_buffer) const noexcept final;
124
+ simdutf_warn_unused result convert_utf16le_to_latin1_with_errors(
125
+ const char16_t *buf, size_t len,
126
+ char *latin1_buffer) const noexcept final;
127
+ simdutf_warn_unused result convert_utf16be_to_latin1_with_errors(
128
+ const char16_t *buf, size_t len,
129
+ char *latin1_buffer) const noexcept final;
130
+ simdutf_warn_unused size_t
131
+ convert_valid_utf16le_to_latin1(const char16_t *buf, size_t len,
132
+ char *latin1_buffer) const noexcept final;
133
+ simdutf_warn_unused size_t
134
+ convert_valid_utf16be_to_latin1(const char16_t *buf, size_t len,
135
+ char *latin1_buffer) const noexcept final;
136
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_LATIN1
137
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
138
+ simdutf_warn_unused size_t convert_utf16le_to_utf8(
139
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
140
+ simdutf_warn_unused size_t convert_utf16be_to_utf8(
141
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
142
+ simdutf_warn_unused result convert_utf16le_to_utf8_with_errors(
143
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
144
+ simdutf_warn_unused result convert_utf16be_to_utf8_with_errors(
145
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
146
+ simdutf_warn_unused size_t convert_valid_utf16le_to_utf8(
147
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
148
+ simdutf_warn_unused size_t convert_valid_utf16be_to_utf8(
149
+ const char16_t *buf, size_t len, char *utf8_buffer) const noexcept final;
150
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
151
+ #if SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
152
+ simdutf_warn_unused size_t
153
+ convert_utf32_to_latin1(const char32_t *buf, size_t len,
154
+ char *latin1_output) const noexcept final;
155
+ simdutf_warn_unused result
156
+ convert_utf32_to_latin1_with_errors(const char32_t *buf, size_t len,
157
+ char *latin1_output) const noexcept final;
158
+ simdutf_warn_unused size_t
159
+ convert_valid_utf32_to_latin1(const char32_t *buf, size_t len,
160
+ char *latin1_output) const noexcept final;
161
+ #endif // SIMDUTF_FEATURE_UTF32 && SIMDUTF_FEATURE_LATIN1
162
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
163
+ simdutf_warn_unused size_t convert_utf32_to_utf8(
164
+ const char32_t *buf, size_t len, char *utf8_buffer) const noexcept final;
165
+ simdutf_warn_unused result convert_utf32_to_utf8_with_errors(
166
+ const char32_t *buf, size_t len, char *utf8_buffer) const noexcept final;
167
+ simdutf_warn_unused size_t convert_valid_utf32_to_utf8(
168
+ const char32_t *buf, size_t len, char *utf8_buffer) const noexcept final;
169
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
170
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
171
+ simdutf_warn_unused size_t
172
+ convert_utf32_to_utf16le(const char32_t *buf, size_t len,
173
+ char16_t *utf16_buffer) const noexcept final;
174
+ simdutf_warn_unused size_t
175
+ convert_utf32_to_utf16be(const char32_t *buf, size_t len,
176
+ char16_t *utf16_buffer) const noexcept final;
177
+ simdutf_warn_unused result convert_utf32_to_utf16le_with_errors(
178
+ const char32_t *buf, size_t len,
179
+ char16_t *utf16_buffer) const noexcept final;
180
+ simdutf_warn_unused result convert_utf32_to_utf16be_with_errors(
181
+ const char32_t *buf, size_t len,
182
+ char16_t *utf16_buffer) const noexcept final;
183
+ simdutf_warn_unused size_t
184
+ convert_valid_utf32_to_utf16le(const char32_t *buf, size_t len,
185
+ char16_t *utf16_buffer) const noexcept final;
186
+ simdutf_warn_unused size_t
187
+ convert_valid_utf32_to_utf16be(const char32_t *buf, size_t len,
188
+ char16_t *utf16_buffer) const noexcept final;
189
+ simdutf_warn_unused size_t
190
+ convert_utf16le_to_utf32(const char16_t *buf, size_t len,
191
+ char32_t *utf32_buffer) const noexcept final;
192
+ simdutf_warn_unused size_t
193
+ convert_utf16be_to_utf32(const char16_t *buf, size_t len,
194
+ char32_t *utf32_buffer) const noexcept final;
195
+ simdutf_warn_unused result convert_utf16le_to_utf32_with_errors(
196
+ const char16_t *buf, size_t len,
197
+ char32_t *utf32_buffer) const noexcept final;
198
+ simdutf_warn_unused result convert_utf16be_to_utf32_with_errors(
199
+ const char16_t *buf, size_t len,
200
+ char32_t *utf32_buffer) const noexcept final;
201
+ simdutf_warn_unused size_t
202
+ convert_valid_utf16le_to_utf32(const char16_t *buf, size_t len,
203
+ char32_t *utf32_buffer) const noexcept final;
204
+ simdutf_warn_unused size_t
205
+ convert_valid_utf16be_to_utf32(const char16_t *buf, size_t len,
206
+ char32_t *utf32_buffer) const noexcept final;
207
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
208
+ #if SIMDUTF_FEATURE_UTF16
209
+ void change_endianness_utf16(const char16_t *buf, size_t length,
210
+ char16_t *output) const noexcept final;
211
+ simdutf_warn_unused size_t
212
+ count_utf16le(const char16_t *buf, size_t length) const noexcept override;
213
+ simdutf_warn_unused size_t
214
+ count_utf16be(const char16_t *buf, size_t length) const noexcept override;
215
+ #endif // SIMDUTF_FEATURE_UTF16
216
+ #if SIMDUTF_FEATURE_UTF8
217
+ simdutf_warn_unused size_t count_utf8(const char *buf,
218
+ size_t length) const noexcept override;
219
+ #endif // SIMDUTF_FEATURE_UTF8
220
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
221
+ simdutf_warn_unused size_t utf8_length_from_utf16le(
222
+ const char16_t *input, size_t length) const noexcept override;
223
+ simdutf_warn_unused size_t utf8_length_from_utf16be(
224
+ const char16_t *input, size_t length) const noexcept override;
225
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
226
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
227
+ simdutf_warn_unused size_t utf32_length_from_utf16le(
228
+ const char16_t *input, size_t length) const noexcept override;
229
+ simdutf_warn_unused size_t utf32_length_from_utf16be(
230
+ const char16_t *input, size_t length) const noexcept override;
231
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
232
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
233
+ simdutf_warn_unused size_t utf16_length_from_utf8(
234
+ const char *input, size_t length) const noexcept override;
235
+ simdutf_warn_unused result utf8_length_from_utf16le_with_replacement(
236
+ const char16_t *input, size_t length) const noexcept override;
237
+ ;
238
+ simdutf_warn_unused result utf8_length_from_utf16be_with_replacement(
239
+ const char16_t *input, size_t length) const noexcept override;
240
+ ;
241
+
242
+ simdutf_warn_unused size_t convert_utf16le_to_utf8_with_replacement(
243
+ const char16_t *input, size_t length,
244
+ char *utf8_buffer) const noexcept override;
245
+
246
+ simdutf_warn_unused size_t convert_utf16be_to_utf8_with_replacement(
247
+ const char16_t *input, size_t length,
248
+ char *utf8_buffer) const noexcept override;
249
+
250
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF16
251
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
252
+ simdutf_warn_unused size_t utf8_length_from_utf32(
253
+ const char32_t *input, size_t length) const noexcept override;
254
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
255
+ #if SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
256
+ simdutf_warn_unused size_t utf16_length_from_utf32(
257
+ const char32_t *input, size_t length) const noexcept override;
258
+ #endif // SIMDUTF_FEATURE_UTF16 && SIMDUTF_FEATURE_UTF32
259
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
260
+ simdutf_warn_unused size_t utf32_length_from_utf8(
261
+ const char *input, size_t length) const noexcept override;
262
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_UTF32
263
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
264
+ simdutf_warn_unused size_t latin1_length_from_utf8(
265
+ const char *input, size_t length) const noexcept override;
266
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
267
+ #if SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
268
+ simdutf_warn_unused size_t utf8_length_from_latin1(
269
+ const char *input, size_t length) const noexcept override;
270
+ #endif // SIMDUTF_FEATURE_UTF8 && SIMDUTF_FEATURE_LATIN1
271
+ #if SIMDUTF_FEATURE_BASE64
272
+ simdutf_warn_unused result base64_to_binary(
273
+ const char *input, size_t length, char *output, base64_options options,
274
+ last_chunk_handling_options last_chunk_options =
275
+ last_chunk_handling_options::loose) const noexcept override;
276
+ simdutf_warn_unused full_result base64_to_binary_details(
277
+ const char *input, size_t length, char *output, base64_options options,
278
+ last_chunk_handling_options last_chunk_options =
279
+ last_chunk_handling_options::loose) const noexcept override;
280
+ simdutf_warn_unused result base64_to_binary(
281
+ const char16_t *input, size_t length, char *output,
282
+ base64_options options,
283
+ last_chunk_handling_options last_chunk_options =
284
+ last_chunk_handling_options::loose) const noexcept override;
285
+ simdutf_warn_unused full_result base64_to_binary_details(
286
+ const char16_t *input, size_t length, char *output,
287
+ base64_options options,
288
+ last_chunk_handling_options last_chunk_options =
289
+ last_chunk_handling_options::loose) const noexcept override;
290
+ size_t binary_to_base64(const char *input, size_t length, char *output,
291
+ base64_options options) const noexcept override;
292
+ size_t
293
+ binary_to_base64_with_lines(const char *input, size_t length, char *output,
294
+ size_t line_length,
295
+ base64_options options) const noexcept override;
296
+ const char *find(const char *start, const char *end,
297
+ char character) const noexcept override;
298
+ const char16_t *find(const char16_t *start, const char16_t *end,
299
+ char16_t character) const noexcept override;
300
+ simdutf_warn_unused size_t binary_length_from_base64(
301
+ const char *input, size_t length) const noexcept override;
302
+ simdutf_warn_unused size_t binary_length_from_base64(
303
+ const char16_t *input, size_t length) const noexcept override;
304
+ #endif // SIMDUTF_FEATURE_BASE64
305
+ };
306
+
307
+ } // namespace lasx
308
+ } // namespace simdutf
309
+
310
+ #endif // SIMDUTF_LASX_IMPLEMENTATION_H
@@ -0,0 +1,319 @@
1
+ #ifndef SIMDUTF_LASX_INTRINSICS_H
2
+ #define SIMDUTF_LASX_INTRINSICS_H
3
+
4
+ #include "simdutf.h"
5
+
6
+ // This should be the correct header whether
7
+ // you use visual studio or other compilers.
8
+ #include <lsxintrin.h>
9
+ #include <lasxintrin.h>
10
+
11
+ #if defined(__loongarch_asx)
12
+ #ifdef __clang__
13
+ #define VREGS_PREFIX "$vr"
14
+ #define XREGS_PREFIX "$xr"
15
+ #else // GCC
16
+ #define VREGS_PREFIX "$f"
17
+ #define XREGS_PREFIX "$f"
18
+ #endif
19
+ #define __ALL_REGS \
20
+ "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26," \
21
+ "27,28,29,30,31"
22
+ // Convert __m128i to __m256i
23
+ static inline __m256i ____m256i(__m128i in) {
24
+ __m256i out = __lasx_xvldi(0);
25
+ __asm__ volatile(".irp i," __ALL_REGS "\n\t"
26
+ " .ifc %[out], " XREGS_PREFIX "\\i \n\t"
27
+ " .irp j," __ALL_REGS "\n\t"
28
+ " .ifc %[in], " VREGS_PREFIX "\\j \n\t"
29
+ " xvpermi.q $xr\\i, $xr\\j, 0x0 \n\t"
30
+ " .endif \n\t"
31
+ " .endr \n\t"
32
+ " .endif \n\t"
33
+ ".endr \n\t"
34
+ : [out] "+f"(out)
35
+ : [in] "f"(in));
36
+ return out;
37
+ }
38
+ // Convert two __m128i to __m256i
39
+ static inline __m256i lasx_set_q(__m128i inhi, __m128i inlo) {
40
+ __m256i out;
41
+ __asm__ volatile(".irp i," __ALL_REGS "\n\t"
42
+ " .ifc %[hi], " VREGS_PREFIX "\\i \n\t"
43
+ " .irp j," __ALL_REGS "\n\t"
44
+ " .ifc %[lo], " VREGS_PREFIX "\\j \n\t"
45
+ " xvpermi.q $xr\\i, $xr\\j, 0x20 \n\t"
46
+ " .endif \n\t"
47
+ " .endr \n\t"
48
+ " .endif \n\t"
49
+ ".endr \n\t"
50
+ ".ifnc %[out], %[hi] \n\t"
51
+ ".irp i," __ALL_REGS "\n\t"
52
+ " .ifc %[out], " XREGS_PREFIX "\\i \n\t"
53
+ " .irp j," __ALL_REGS "\n\t"
54
+ " .ifc %[hi], " VREGS_PREFIX "\\j \n\t"
55
+ " xvori.b $xr\\i, $xr\\j, 0 \n\t"
56
+ " .endif \n\t"
57
+ " .endr \n\t"
58
+ " .endif \n\t"
59
+ ".endr \n\t"
60
+ ".endif \n\t"
61
+ : [out] "=f"(out), [hi] "+f"(inhi)
62
+ : [lo] "f"(inlo));
63
+ return out;
64
+ }
65
+ // Convert __m256i low part to __m128i
66
+ static inline __m128i lasx_extracti128_lo(__m256i in) {
67
+ __m128i out;
68
+ __asm__ volatile(".ifnc %[out], %[in] \n\t"
69
+ ".irp i," __ALL_REGS "\n\t"
70
+ " .ifc %[out], " VREGS_PREFIX "\\i \n\t"
71
+ " .irp j," __ALL_REGS "\n\t"
72
+ " .ifc %[in], " XREGS_PREFIX "\\j \n\t"
73
+ " vori.b $vr\\i, $vr\\j, 0 \n\t"
74
+ " .endif \n\t"
75
+ " .endr \n\t"
76
+ " .endif \n\t"
77
+ ".endr \n\t"
78
+ ".endif \n\t"
79
+ : [out] "=f"(out)
80
+ : [in] "f"(in));
81
+ return out;
82
+ }
83
+ // Convert __m256i high part to __m128i
84
+ static inline __m128i lasx_extracti128_hi(__m256i in) {
85
+ __m128i out;
86
+ __asm__ volatile(".irp i," __ALL_REGS "\n\t"
87
+ " .ifc %[out], " VREGS_PREFIX "\\i \n\t"
88
+ " .irp j," __ALL_REGS "\n\t"
89
+ " .ifc %[in], " XREGS_PREFIX "\\j \n\t"
90
+ " xvpermi.q $xr\\i, $xr\\j, 0x11 \n\t"
91
+ " .endif \n\t"
92
+ " .endr \n\t"
93
+ " .endif \n\t"
94
+ ".endr \n\t"
95
+ : [out] "=f"(out)
96
+ : [in] "f"(in));
97
+ return out;
98
+ }
99
+ #endif
100
+
101
+ /*
102
+ Encoding of argument for LoongArch64 xvldi instruction. See:
103
+ https://jia.je/unofficial-loongarch-intrinsics-guide/lasx/misc/#__m256i-__lasx_xvldi-imm_n1024_1023-imm
104
+
105
+ 1: imm[12:8]=0b10000: broadcast imm[7:0] as 32-bit elements to all lanes
106
+
107
+ 2: imm[12:8]=0b10001: broadcast imm[7:0] << 8 as 32-bit elements to all lanes
108
+
109
+ 3: imm[12:8]=0b10010: broadcast imm[7:0] << 16 as 32-bit elements to all lanes
110
+
111
+ 4: imm[12:8]=0b10011: broadcast imm[7:0] << 24 as 32-bit elements to all lanes
112
+
113
+ 5: imm[12:8]=0b10100: broadcast imm[7:0] as 16-bit elements to all lanes
114
+
115
+ 6: imm[12:8]=0b10101: broadcast imm[7:0] << 8 as 16-bit elements to all lanes
116
+
117
+ 7: imm[12:8]=0b10110: broadcast (imm[7:0] << 8) | 0xFF as 32-bit elements to all
118
+ lanes
119
+
120
+ 8: imm[12:8]=0b10111: broadcast (imm[7:0] << 16) | 0xFFFF as 32-bit elements to
121
+ all lanes
122
+
123
+ 9: imm[12:8]=0b11000: broadcast imm[7:0] as 8-bit elements to all lanes
124
+
125
+ 10: imm[12:8]=0b11001: repeat each bit of imm[7:0] eight times, and broadcast
126
+ the result as 64-bit elements to all lanes
127
+ */
128
+
129
+ namespace lasx_vldi {
130
+
131
+ template <uint16_t v> class const_u16 {
132
+ constexpr static const uint8_t b0 = ((v >> 0 * 8) & 0xff);
133
+ constexpr static const uint8_t b1 = ((v >> 1 * 8) & 0xff);
134
+
135
+ constexpr static bool is_case5 = uint16_t(b0) == v;
136
+ constexpr static bool is_case6 = (uint16_t(b1) << 8) == v;
137
+ constexpr static bool is_case9 = (b0 == b1);
138
+ constexpr static bool is_case10 =
139
+ ((b0 == 0xff) || (b0 == 0x00)) && ((b1 == 0xff) || (b1 == 0x00));
140
+
141
+ public:
142
+ constexpr static uint16_t operation = is_case5 ? 0b10100
143
+ : is_case6 ? 0b10101
144
+ : is_case9 ? 0b11000
145
+ : is_case10 ? 0x11001
146
+ : 0xffff;
147
+
148
+ constexpr static uint16_t byte =
149
+ is_case5 ? b0
150
+ : is_case6 ? b1
151
+ : is_case9 ? b0
152
+ : is_case10 ? ((b0 ? 0x55 : 0x00) | (b1 ? 0xaa : 0x00))
153
+ : 0xffff;
154
+
155
+ constexpr static int value = int((operation << 8) | byte) - 8192;
156
+ constexpr static bool valid = operation != 0xffff;
157
+ };
158
+
159
+ template <uint32_t v> class const_u32 {
160
+ constexpr static const uint8_t b0 = (v & 0xff);
161
+ constexpr static const uint8_t b1 = ((v >> 8) & 0xff);
162
+ constexpr static const uint8_t b2 = ((v >> 16) & 0xff);
163
+ constexpr static const uint8_t b3 = ((v >> 24) & 0xff);
164
+
165
+ constexpr static bool is_case1 = (uint32_t(b0) == v);
166
+ constexpr static bool is_case2 = ((uint32_t(b1) << 8) == v);
167
+ constexpr static bool is_case3 = ((uint32_t(b2) << 16) == v);
168
+ constexpr static bool is_case4 = ((uint32_t(b3) << 24) == v);
169
+ constexpr static bool is_case5 = (b0 == b2) && (b1 == 0) && (b3 == 0);
170
+ constexpr static bool is_case6 = (b1 == b3) && (b0 == 0) && (b2 == 0);
171
+ constexpr static bool is_case7 = (b3 == 0) && (b2 == 0) && (b0 == 0xff);
172
+ constexpr static bool is_case8 = (b3 == 0) && (b1 == 0xff) && (b0 == 0xff);
173
+ constexpr static bool is_case9 = (b0 == b1) && (b0 == b2) && (b0 == b3);
174
+ constexpr static bool is_case10 =
175
+ ((b0 == 0xff) || (b0 == 0x00)) && ((b1 == 0xff) || (b1 == 0x00)) &&
176
+ ((b2 == 0xff) || (b2 == 0x00)) && ((b3 == 0xff) || (b3 == 0x00));
177
+
178
+ public:
179
+ constexpr static uint16_t operation = is_case1 ? 0b10000
180
+ : is_case2 ? 0b10001
181
+ : is_case3 ? 0b10010
182
+ : is_case4 ? 0b10011
183
+ : is_case5 ? 0b10100
184
+ : is_case6 ? 0b10101
185
+ : is_case7 ? 0b10110
186
+ : is_case8 ? 0b10111
187
+ : is_case9 ? 0b11000
188
+ : is_case10 ? 0b11001
189
+ : 0xffff;
190
+
191
+ constexpr static uint16_t byte =
192
+ is_case1 ? b0
193
+ : is_case2 ? b1
194
+ : is_case3 ? b2
195
+ : is_case4 ? b3
196
+ : is_case5 ? b0
197
+ : is_case6 ? b1
198
+ : is_case7 ? b1
199
+ : is_case8 ? b2
200
+ : is_case9 ? b0
201
+ : is_case10 ? ((b0 ? 0x11 : 0x00) | (b1 ? 0x22 : 0x00) |
202
+ (b2 ? 0x44 : 0x00) | (b3 ? 0x88 : 0x00))
203
+ : 0xffff;
204
+
205
+ constexpr static int value = int((operation << 8) | byte) - 8192;
206
+ constexpr static bool valid = operation != 0xffff;
207
+ };
208
+
209
+ template <uint64_t v> class const_u64 {
210
+ constexpr static const uint8_t b0 = ((v >> 0 * 8) & 0xff);
211
+ constexpr static const uint8_t b1 = ((v >> 1 * 8) & 0xff);
212
+ constexpr static const uint8_t b2 = ((v >> 2 * 8) & 0xff);
213
+ constexpr static const uint8_t b3 = ((v >> 3 * 8) & 0xff);
214
+ constexpr static const uint8_t b4 = ((v >> 4 * 8) & 0xff);
215
+ constexpr static const uint8_t b5 = ((v >> 5 * 8) & 0xff);
216
+ constexpr static const uint8_t b6 = ((v >> 6 * 8) & 0xff);
217
+ constexpr static const uint8_t b7 = ((v >> 7 * 8) & 0xff);
218
+
219
+ constexpr static bool is_case10 =
220
+ ((b0 == 0xff) || (b0 == 0x00)) && ((b1 == 0xff) || (b1 == 0x00)) &&
221
+ ((b2 == 0xff) || (b2 == 0x00)) && ((b3 == 0xff) || (b3 == 0x00)) &&
222
+ ((b4 == 0xff) || (b4 == 0x00)) && ((b5 == 0xff) || (b5 == 0x00)) &&
223
+ ((b6 == 0xff) || (b6 == 0x00)) && ((b7 == 0xff) || (b7 == 0x00));
224
+
225
+ public:
226
+ constexpr static bool is_32bit =
227
+ ((v & 0xffffffff) == (v >> 32)) && const_u32<(v >> 32)>::value;
228
+ constexpr static uint8_t op_32bit = const_u32<(v >> 32)>::operation;
229
+ constexpr static uint8_t byte_32bit = const_u32<(v >> 32)>::byte;
230
+
231
+ constexpr static uint16_t operation = is_32bit ? op_32bit
232
+ : is_case10 ? 0x11001
233
+ : 0xffff;
234
+
235
+ constexpr static uint16_t byte =
236
+ is_32bit ? byte_32bit
237
+ : is_case10
238
+ ? ((b0 ? 0x01 : 0x00) | (b1 ? 0x02 : 0x00) | (b2 ? 0x04 : 0x00) |
239
+ (b3 ? 0x08 : 0x00) | (b4 ? 0x10 : 0x00) | (b5 ? 0x20 : 0x00) |
240
+ (b6 ? 0x40 : 0x00) | (b7 ? 0x80 : 0x00))
241
+ : 0xffff;
242
+
243
+ constexpr static int value = int((operation << 8) | byte) - 8192;
244
+ constexpr static bool valid = operation != 0xffff;
245
+ };
246
+
247
+ } // namespace lasx_vldi
248
+
249
+ // Uncomment when running under QEMU affected
250
+ // by bug https://gitlab.com/qemu-project/qemu/-/issues/2865
251
+ // Versions <= 9.2.2 are affected, likely anything newer is correct.
252
+ #ifndef QEMU_VLDI_BUG
253
+ // #define QEMU_VLDI_BUG 1
254
+ #endif
255
+
256
+ #ifdef QEMU_VLDI_BUG
257
+ #define lasx_splat_u16(v) __lasx_xvreplgr2vr_h(v)
258
+ #define lasx_splat_u32(v) __lasx_xvreplgr2vr_w(v)
259
+ #else
260
+ template <uint16_t x> constexpr __m256i lasx_splat_u16_aux() {
261
+ constexpr bool is_imm10 = (int16_t(x) < 512) && (int16_t(x) > -512);
262
+ constexpr uint16_t imm10 = is_imm10 ? x : 0;
263
+ constexpr bool is_vldi = lasx_vldi::const_u16<x>::valid;
264
+ constexpr int vldi_imm = is_vldi ? lasx_vldi::const_u16<x>::value : 0;
265
+
266
+ return is_imm10 ? __lasx_xvrepli_h(int16_t(imm10))
267
+ : is_vldi ? __lasx_xvldi(vldi_imm)
268
+ : __lasx_xvreplgr2vr_h(x);
269
+ }
270
+
271
+ template <uint32_t x> constexpr __m256i lasx_splat_u32_aux() {
272
+ constexpr bool is_imm10 = (int32_t(x) < 512) && (int32_t(x) > -512);
273
+ constexpr uint32_t imm10 = is_imm10 ? x : 0;
274
+ constexpr bool is_vldi = lasx_vldi::const_u32<x>::valid;
275
+ constexpr int vldi_imm = is_vldi ? lasx_vldi::const_u32<x>::value : 0;
276
+
277
+ return is_imm10 ? __lasx_xvrepli_w(int32_t(imm10))
278
+ : is_vldi ? __lasx_xvldi(vldi_imm)
279
+ : __lasx_xvreplgr2vr_w(x);
280
+ }
281
+
282
+ #define lasx_splat_u16(v) lasx_splat_u16_aux<(v)>()
283
+ #define lasx_splat_u32(v) lasx_splat_u32_aux<(v)>()
284
+ #endif // QEMU_VLDI_BUG
285
+
286
+ #ifndef lsx_splat_u16
287
+ #ifdef QEMU_VLDI_BUG
288
+ #define lsx_splat_u16(v) __lsx_vreplgr2vr_h(v)
289
+ #define lsx_splat_u32(v) __lsx_vreplgr2vr_w(v)
290
+ #else
291
+ namespace {
292
+ template <uint16_t x> constexpr __m128i lsx_splat_u16_aux() {
293
+ return ((int16_t(x) < 512) && (int16_t(x) > -512))
294
+ ? __lsx_vrepli_h(
295
+ ((int16_t(x) < 512) && (int16_t(x) > -512)) ? int16_t(x) : 0)
296
+ : (lasx_vldi::const_u16<x>::valid
297
+ ? __lsx_vldi(lasx_vldi::const_u16<x>::valid
298
+ ? lasx_vldi::const_u16<x>::value
299
+ : 0)
300
+ : __lsx_vreplgr2vr_h(x));
301
+ }
302
+
303
+ template <uint32_t x> constexpr __m128i lsx_splat_u32_aux() {
304
+ return ((int32_t(x) < 512) && (int32_t(x) > -512))
305
+ ? __lsx_vrepli_w(
306
+ ((int32_t(x) < 512) && (int32_t(x) > -512)) ? int32_t(x) : 0)
307
+ : (lasx_vldi::const_u32<x>::valid
308
+ ? __lsx_vldi(lasx_vldi::const_u32<x>::valid
309
+ ? lasx_vldi::const_u32<x>::value
310
+ : 0)
311
+ : __lsx_vreplgr2vr_w(x));
312
+ }
313
+ } // namespace
314
+ #define lsx_splat_u16(v) lsx_splat_u16_aux<(v)>()
315
+ #define lsx_splat_u32(v) lsx_splat_u32_aux<(v)>()
316
+ #endif // QEMU_VLDI_BUG
317
+ #endif // lsx_splat_u16
318
+
319
+ #endif // SIMDUTF_LASX_INTRINSICS_H