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.
- package/QuickCrypto.podspec +12 -38
- package/README.md +2 -0
- package/android/CMakeLists.txt +3 -0
- package/cpp/utils/HybridUtils.cpp +39 -77
- package/deps/simdutf/.clang-format +4 -0
- package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +62 -0
- package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +1 -0
- package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +35 -0
- package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +29 -0
- package/deps/simdutf/.github/pull_request_template.md +51 -0
- package/deps/simdutf/.github/workflows/aarch64.yml +39 -0
- package/deps/simdutf/.github/workflows/alpine.yml +27 -0
- package/deps/simdutf/.github/workflows/amalgamation_demos.yml +34 -0
- package/deps/simdutf/.github/workflows/armv7.yml +32 -0
- package/deps/simdutf/.github/workflows/atomic_fuzz.yml +25 -0
- package/deps/simdutf/.github/workflows/cifuzz.yml +37 -0
- package/deps/simdutf/.github/workflows/clangformat.yml +36 -0
- package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +40 -0
- package/deps/simdutf/.github/workflows/debian.yml +33 -0
- package/deps/simdutf/.github/workflows/documentation.yml +36 -0
- package/deps/simdutf/.github/workflows/emscripten.yml +19 -0
- package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +39 -0
- package/deps/simdutf/.github/workflows/macos-latest.yml +29 -0
- package/deps/simdutf/.github/workflows/msys2-clang.yml +48 -0
- package/deps/simdutf/.github/workflows/msys2.yml +50 -0
- package/deps/simdutf/.github/workflows/ppc64le.yml +29 -0
- package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +35 -0
- package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +35 -0
- package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +31 -0
- package/deps/simdutf/.github/workflows/s390x.yml +29 -0
- package/deps/simdutf/.github/workflows/selective-amalgamation.yml +29 -0
- package/deps/simdutf/.github/workflows/typos.yml +19 -0
- package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +30 -0
- package/deps/simdutf/.github/workflows/ubuntu22.yml +32 -0
- package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +27 -0
- package/deps/simdutf/.github/workflows/ubuntu22sani.yml +29 -0
- package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +34 -0
- package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +34 -0
- package/deps/simdutf/.github/workflows/ubuntu24.yml +32 -0
- package/deps/simdutf/.github/workflows/ubuntu24sani.yml +36 -0
- package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +29 -0
- package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +21 -0
- package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +41 -0
- package/deps/simdutf/.github/workflows/vs17-ci.yml +41 -0
- package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +41 -0
- package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +36 -0
- package/deps/simdutf/AI_USAGE_POLICY.md +56 -0
- package/deps/simdutf/AUTHORS +6 -0
- package/deps/simdutf/CMakeLists.txt +231 -0
- package/deps/simdutf/CONTRIBUTING.md +214 -0
- package/deps/simdutf/CONTRIBUTORS +1 -0
- package/deps/simdutf/Doxyfile +2584 -0
- package/deps/simdutf/LICENSE-APACHE +201 -0
- package/deps/simdutf/LICENSE-MIT +18 -0
- package/deps/simdutf/Makefile.crosscompile +54 -0
- package/deps/simdutf/README-RVV.md +16 -0
- package/deps/simdutf/README.md +2782 -0
- package/deps/simdutf/SECURITY.md +8 -0
- package/deps/simdutf/benchmarks/CMakeLists.txt +101 -0
- package/deps/simdutf/benchmarks/alignment.cpp +150 -0
- package/deps/simdutf/benchmarks/base64/CMakeLists.txt +30 -0
- package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +875 -0
- package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +49 -0
- package/deps/simdutf/benchmarks/base64/node_base64.h +227 -0
- package/deps/simdutf/benchmarks/base64/openssl3_base64.h +334 -0
- package/deps/simdutf/benchmarks/benchmark.cpp +65 -0
- package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +347 -0
- package/deps/simdutf/benchmarks/competition/.clang-format-ignore +5 -0
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +1276 -0
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +595 -0
- package/deps/simdutf/benchmarks/competition/README.md +7 -0
- package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +91 -0
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +444 -0
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +13183 -0
- package/deps/simdutf/benchmarks/competition/inoue2008/script.py +73 -0
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +738 -0
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +293 -0
- package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +8 -0
- package/deps/simdutf/benchmarks/competition/u8u16/Makefile +44 -0
- package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +169 -0
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +148 -0
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +45 -0
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +34 -0
- package/deps/simdutf/benchmarks/competition/u8u16/README +56 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +43 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +27 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +16 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +18 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +16 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +28 -0
- package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +20 -0
- package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +2 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +440 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +121 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +158 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +270 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +141 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +216 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +119 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +2430 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +39 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +421 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +836 -0
- package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +222 -0
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +4 -0
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +5 -0
- package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +390 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +18 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +448 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +284 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +1975 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +2263 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +239 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +232 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +194 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +193 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +167 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +288 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +117 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +2 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +2 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +3 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +2 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +2 -0
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +3 -0
- package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +2 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +23 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +44 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +106 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +11 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +13 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +13 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +13 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +14 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +11 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +8 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +12 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +13 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +14 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +11 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +8 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +11 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +12 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +13 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +10 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +9 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +25 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +94 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +20 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +2 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +1 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +75 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +47 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +17 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +76 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +35 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +117 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +210 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +158 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +104 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +334 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +186 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +140 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +42 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +100 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +57 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +85 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +27 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +126 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +108 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +139 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +74 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +65 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +91 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +772 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +12 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +486 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +162 -0
- package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +15 -0
- package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +292 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +23 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/README.md +1503 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +335 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +338 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +103 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +103 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +274 -0
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +34 -0
- package/deps/simdutf/benchmarks/dataset/README.md +155 -0
- package/deps/simdutf/benchmarks/dataset/emoji.txt +204 -0
- package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +40 -0
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +80 -0
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +20 -0
- package/deps/simdutf/benchmarks/find/CMakeLists.txt +6 -0
- package/deps/simdutf/benchmarks/find/findbenchmark.cpp +63 -0
- package/deps/simdutf/benchmarks/find/findbenchmarker.h +46 -0
- package/deps/simdutf/benchmarks/shortbench.cpp +555 -0
- package/deps/simdutf/benchmarks/src/CMakeLists.txt +52 -0
- package/deps/simdutf/benchmarks/src/apple_arm_events.h +1104 -0
- package/deps/simdutf/benchmarks/src/benchmark.cpp +3899 -0
- package/deps/simdutf/benchmarks/src/benchmark.h +317 -0
- package/deps/simdutf/benchmarks/src/benchmark_base.cpp +144 -0
- package/deps/simdutf/benchmarks/src/benchmark_base.h +98 -0
- package/deps/simdutf/benchmarks/src/cmdline.cpp +176 -0
- package/deps/simdutf/benchmarks/src/cmdline.h +35 -0
- package/deps/simdutf/benchmarks/src/event_counter.h +162 -0
- package/deps/simdutf/benchmarks/src/linux-perf-events.h +104 -0
- package/deps/simdutf/benchmarks/stream.cpp +209 -0
- package/deps/simdutf/benchmarks/threaded.cpp +123 -0
- package/deps/simdutf/cmake/CPM.cmake +1363 -0
- package/deps/simdutf/cmake/JoinPaths.cmake +23 -0
- package/deps/simdutf/cmake/add_cpp_test.cmake +68 -0
- package/deps/simdutf/cmake/simdutf-config.cmake.in +2 -0
- package/deps/simdutf/cmake/simdutf-flags.cmake +26 -0
- package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +4 -0
- package/deps/simdutf/cmake/toolchains-dev/README.md +32 -0
- package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +14 -0
- package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +22 -0
- package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +16 -0
- package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +16 -0
- package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +16 -0
- package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +38 -0
- package/deps/simdutf/doc/avx512.png +0 -0
- package/deps/simdutf/doc/logo.png +0 -0
- package/deps/simdutf/doc/logo.svg +165 -0
- package/deps/simdutf/doc/node2023.png +0 -0
- package/deps/simdutf/doc/shortinput.md +78 -0
- package/deps/simdutf/doc/utf16utf8.png +0 -0
- package/deps/simdutf/doc/utf8utf16.png +0 -0
- package/deps/simdutf/doc/widelogo.png +0 -0
- package/deps/simdutf/doxygen.py +50 -0
- package/deps/simdutf/fuzz/.clang-format +9 -0
- package/deps/simdutf/fuzz/CMakeLists.txt +45 -0
- package/deps/simdutf/fuzz/README.md +168 -0
- package/deps/simdutf/fuzz/atomic_base64.cpp +448 -0
- package/deps/simdutf/fuzz/base64.cpp +278 -0
- package/deps/simdutf/fuzz/build.sh +83 -0
- package/deps/simdutf/fuzz/conversion.cpp +669 -0
- package/deps/simdutf/fuzz/helpers/.clang-format-ignore +1 -0
- package/deps/simdutf/fuzz/helpers/common.h +135 -0
- package/deps/simdutf/fuzz/helpers/nameof.hpp +1258 -0
- package/deps/simdutf/fuzz/main.cpp +72 -0
- package/deps/simdutf/fuzz/minimize_and_cleanse.sh +87 -0
- package/deps/simdutf/fuzz/misc.cpp +216 -0
- package/deps/simdutf/fuzz/random_fuzz.sh +154 -0
- package/deps/simdutf/fuzz/roundtrip.cpp +588 -0
- package/deps/simdutf/fuzz/safe_conversion.cpp +104 -0
- package/deps/simdutf/include/simdutf/avx512.h +79 -0
- package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
- package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
- package/deps/simdutf/include/simdutf/common_defs.h +186 -0
- package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
- package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
- package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
- package/deps/simdutf/include/simdutf/error.h +126 -0
- package/deps/simdutf/include/simdutf/implementation.h +7081 -0
- package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
- package/deps/simdutf/include/simdutf/portability.h +285 -0
- package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
- package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
- package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
- package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
- package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
- package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
- package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
- package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
- package/deps/simdutf/include/simdutf.h +26 -0
- package/deps/simdutf/include/simdutf_c.h +342 -0
- package/deps/simdutf/riscv/Dockerfile +16 -0
- package/deps/simdutf/riscv/README.md +24 -0
- package/deps/simdutf/riscv/remove-docker-station +8 -0
- package/deps/simdutf/riscv/run-docker-station +31 -0
- package/deps/simdutf/scripts/.flake8 +2 -0
- package/deps/simdutf/scripts/Makefile +2 -0
- package/deps/simdutf/scripts/README_ADD_FUNCTION.md +49 -0
- package/deps/simdutf/scripts/add_function.py +330 -0
- package/deps/simdutf/scripts/amalgamation_tests.py +156 -0
- package/deps/simdutf/scripts/base64/Makefile +2 -0
- package/deps/simdutf/scripts/base64/README.md +2 -0
- package/deps/simdutf/scripts/base64/avx512.py +76 -0
- package/deps/simdutf/scripts/base64/neon_decode.py +143 -0
- package/deps/simdutf/scripts/base64/neon_generate_lut.py +101 -0
- package/deps/simdutf/scripts/base64/sse.py +252 -0
- package/deps/simdutf/scripts/base64/sseregular.py +160 -0
- package/deps/simdutf/scripts/base64/sseurl.py +283 -0
- package/deps/simdutf/scripts/base64/table.py +59 -0
- package/deps/simdutf/scripts/base64bench_print.py +145 -0
- package/deps/simdutf/scripts/benchmark-all.py +119 -0
- package/deps/simdutf/scripts/benchmark_print.py +324 -0
- package/deps/simdutf/scripts/check_feature_macros.py +156 -0
- package/deps/simdutf/scripts/check_typos.sh +13 -0
- package/deps/simdutf/scripts/clang_format.sh +35 -0
- package/deps/simdutf/scripts/clang_format_docker.sh +38 -0
- package/deps/simdutf/scripts/common.py +24 -0
- package/deps/simdutf/scripts/compilation_benchmark.py +55 -0
- package/deps/simdutf/scripts/compile_many_variations.sh +64 -0
- package/deps/simdutf/scripts/create_latex_table.py +62 -0
- package/deps/simdutf/scripts/docker/Dockerfile +14 -0
- package/deps/simdutf/scripts/docker/Makefile +9 -0
- package/deps/simdutf/scripts/docker/README.md +30 -0
- package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
- package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +155 -0
- package/deps/simdutf/scripts/prepare_doxygen.sh +21 -0
- package/deps/simdutf/scripts/release.py +197 -0
- package/deps/simdutf/scripts/shortinputplots.py +97 -0
- package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +422 -0
- package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +105 -0
- package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +186 -0
- package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +137 -0
- package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +129 -0
- package/deps/simdutf/scripts/table.py +207 -0
- package/deps/simdutf/scripts/tests/new.txt +33 -0
- package/deps/simdutf/scripts/tests/old.txt +33 -0
- package/deps/simdutf/scripts/tests/results.txt +272 -0
- package/deps/simdutf/simdutf.pc.in +11 -0
- package/deps/simdutf/singleheader/.flake8 +2 -0
- package/deps/simdutf/singleheader/CMakeLists.txt +64 -0
- package/deps/simdutf/singleheader/README-dev.md +81 -0
- package/deps/simdutf/singleheader/README.md +19 -0
- package/deps/simdutf/singleheader/amalgamate.py +513 -0
- package/deps/simdutf/singleheader/amalgamation_demo.c +59 -0
- package/deps/simdutf/singleheader/amalgamation_demo.cpp +54 -0
- package/deps/simdutf/singleheader/test-features.py +262 -0
- package/deps/simdutf/src/CMakeLists.txt +78 -0
- package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
- package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
- package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
- package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
- package/deps/simdutf/src/encoding_types.cpp +67 -0
- package/deps/simdutf/src/error.cpp +3 -0
- package/deps/simdutf/src/fallback/implementation.cpp +589 -0
- package/deps/simdutf/src/generic/ascii_validation.h +50 -0
- package/deps/simdutf/src/generic/base64.h +233 -0
- package/deps/simdutf/src/generic/base64lengths.h +63 -0
- package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
- package/deps/simdutf/src/generic/find.h +75 -0
- package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
- package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
- package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
- package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
- package/deps/simdutf/src/generic/utf16.h +73 -0
- package/deps/simdutf/src/generic/utf32.h +136 -0
- package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
- package/deps/simdutf/src/generic/utf8.h +92 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
- package/deps/simdutf/src/generic/validate_utf16.h +164 -0
- package/deps/simdutf/src/generic/validate_utf32.h +99 -0
- package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
- package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
- package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
- package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
- package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
- package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
- package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
- package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
- package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
- package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
- package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
- package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
- package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
- package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
- package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
- package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
- package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
- package/deps/simdutf/src/implementation.cpp +2526 -0
- package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
- package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
- package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
- package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
- package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
- package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
- package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
- package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
- package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
- package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
- package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
- package/deps/simdutf/src/ppc64/templates.cpp +91 -0
- package/deps/simdutf/src/rvv/implementation.cpp +138 -0
- package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
- package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
- package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
- package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
- package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
- package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
- package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
- package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
- package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
- package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
- package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
- package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
- package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
- package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
- package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
- package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
- package/deps/simdutf/src/simdutf/arm64.h +43 -0
- package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
- package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
- package/deps/simdutf/src/simdutf/fallback.h +42 -0
- package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
- package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
- package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
- package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
- package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
- package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
- package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
- package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
- package/deps/simdutf/src/simdutf/haswell.h +63 -0
- package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
- package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
- package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
- package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
- package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
- package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
- package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
- package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
- package/deps/simdutf/src/simdutf/icelake.h +81 -0
- package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
- package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
- package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
- package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
- package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
- package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
- package/deps/simdutf/src/simdutf/lasx.h +49 -0
- package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
- package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
- package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
- package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
- package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
- package/deps/simdutf/src/simdutf/lsx.h +52 -0
- package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
- package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
- package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
- package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
- package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
- package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
- package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
- package/deps/simdutf/src/simdutf/ppc64.h +40 -0
- package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
- package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
- package/deps/simdutf/src/simdutf/rvv.h +41 -0
- package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
- package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
- package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
- package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
- package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
- package/deps/simdutf/src/simdutf/westmere.h +59 -0
- package/deps/simdutf/src/simdutf.cpp +152 -0
- package/deps/simdutf/src/simdutf_c.cpp +525 -0
- package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
- package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
- package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
- package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
- package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
- package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
- package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
- package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
- package/deps/simdutf/tests/CMakeLists.txt +483 -0
- package/deps/simdutf/tests/atomic_base64_tests.cpp +2845 -0
- package/deps/simdutf/tests/base64_tests.cpp +3617 -0
- package/deps/simdutf/tests/basic_fuzzer.cpp +805 -0
- package/deps/simdutf/tests/bele_tests.cpp +182 -0
- package/deps/simdutf/tests/constexpr_base64_tests.cpp +387 -0
- package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +52 -0
- package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +80 -0
- package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +66 -0
- package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +120 -0
- package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +203 -0
- package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +276 -0
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +109 -0
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +136 -0
- package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +193 -0
- package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +381 -0
- package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +259 -0
- package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +266 -0
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +148 -0
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +176 -0
- package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +213 -0
- package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +318 -0
- package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +343 -0
- package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +271 -0
- package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +111 -0
- package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +96 -0
- package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +148 -0
- package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +192 -0
- package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +166 -0
- package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +215 -0
- package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +181 -0
- package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +261 -0
- package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +516 -0
- package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +579 -0
- package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +412 -0
- package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +480 -0
- package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +671 -0
- package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +455 -0
- package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +1204 -0
- package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +337 -0
- package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +37 -0
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +97 -0
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +126 -0
- package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +71 -0
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +122 -0
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +244 -0
- package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +49 -0
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +92 -0
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +114 -0
- package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +109 -0
- package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +84 -0
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +124 -0
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +221 -0
- package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +155 -0
- package/deps/simdutf/tests/count_utf16be.cpp +64 -0
- package/deps/simdutf/tests/count_utf16le.cpp +61 -0
- package/deps/simdutf/tests/count_utf8.cpp +87 -0
- package/deps/simdutf/tests/detect_encodings_tests.cpp +312 -0
- package/deps/simdutf/tests/embed/valid_utf8.txt +1 -0
- package/deps/simdutf/tests/embed_tests.cpp +22 -0
- package/deps/simdutf/tests/find_tests.cpp +77 -0
- package/deps/simdutf/tests/fixed_string_tests.cpp +153 -0
- package/deps/simdutf/tests/helpers/CMakeLists.txt +25 -0
- package/deps/simdutf/tests/helpers/compiletime_conversions.h +222 -0
- package/deps/simdutf/tests/helpers/fixed_string.h +267 -0
- package/deps/simdutf/tests/helpers/random_int.cpp +30 -0
- package/deps/simdutf/tests/helpers/random_int.h +39 -0
- package/deps/simdutf/tests/helpers/random_utf16.cpp +123 -0
- package/deps/simdutf/tests/helpers/random_utf16.h +52 -0
- package/deps/simdutf/tests/helpers/random_utf32.cpp +41 -0
- package/deps/simdutf/tests/helpers/random_utf32.h +40 -0
- package/deps/simdutf/tests/helpers/random_utf8.cpp +93 -0
- package/deps/simdutf/tests/helpers/random_utf8.h +36 -0
- package/deps/simdutf/tests/helpers/test.cpp +231 -0
- package/deps/simdutf/tests/helpers/test.h +193 -0
- package/deps/simdutf/tests/helpers/transcode_test_base.cpp +1257 -0
- package/deps/simdutf/tests/helpers/transcode_test_base.h +683 -0
- package/deps/simdutf/tests/helpers/utf16.h +27 -0
- package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +43 -0
- package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +47 -0
- package/deps/simdutf/tests/internal_tests.cpp +27 -0
- package/deps/simdutf/tests/null_safety_tests.cpp +94 -0
- package/deps/simdutf/tests/random_fuzzer.cpp +779 -0
- package/deps/simdutf/tests/readme_tests.cpp +274 -0
- package/deps/simdutf/tests/reference/CMakeLists.txt +23 -0
- package/deps/simdutf/tests/reference/decode_utf16.h +81 -0
- package/deps/simdutf/tests/reference/decode_utf32.h +47 -0
- package/deps/simdutf/tests/reference/encode_latin1.cpp +1 -0
- package/deps/simdutf/tests/reference/encode_latin1.h +32 -0
- package/deps/simdutf/tests/reference/encode_utf16.cpp +49 -0
- package/deps/simdutf/tests/reference/encode_utf16.h +20 -0
- package/deps/simdutf/tests/reference/encode_utf32.cpp +1 -0
- package/deps/simdutf/tests/reference/encode_utf32.h +36 -0
- package/deps/simdutf/tests/reference/encode_utf8.cpp +1 -0
- package/deps/simdutf/tests/reference/encode_utf8.h +40 -0
- package/deps/simdutf/tests/reference/validate_utf16.cpp +60 -0
- package/deps/simdutf/tests/reference/validate_utf16.h +14 -0
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +35 -0
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +13 -0
- package/deps/simdutf/tests/reference/validate_utf32.cpp +27 -0
- package/deps/simdutf/tests/reference/validate_utf32.h +12 -0
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +27 -0
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +12 -0
- package/deps/simdutf/tests/reference/validate_utf8.cpp +82 -0
- package/deps/simdutf/tests/reference/validate_utf8.h +11 -0
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +43 -0
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +12 -0
- package/deps/simdutf/tests/select_implementation.cpp +43 -0
- package/deps/simdutf/tests/simdutf_c_tests.cpp +244 -0
- package/deps/simdutf/tests/span_tests.cpp +401 -0
- package/deps/simdutf/tests/special_tests.cpp +559 -0
- package/deps/simdutf/tests/straight_c_test.c +187 -0
- package/deps/simdutf/tests/text_encoding_tests.cpp +77 -0
- package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +377 -0
- package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +202 -0
- package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +165 -0
- package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +77 -0
- package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +175 -0
- package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +188 -0
- package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +268 -0
- package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +274 -0
- package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +92 -0
- package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +114 -0
- package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +178 -0
- package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +88 -0
- package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +33 -0
- package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +228 -0
- package/deps/simdutf/tools/CMakeLists.txt +85 -0
- package/deps/simdutf/tools/fastbase64.cpp +250 -0
- package/deps/simdutf/tools/sutf.cpp +556 -0
- package/deps/simdutf/tools/sutf.h +40 -0
- package/lib/commonjs/blake3.js +2 -1
- package/lib/commonjs/blake3.js.map +1 -1
- package/lib/commonjs/diffie-hellman.js +5 -4
- package/lib/commonjs/diffie-hellman.js.map +1 -1
- package/lib/commonjs/ecdh.js +5 -4
- package/lib/commonjs/ecdh.js.map +1 -1
- package/lib/module/blake3.js +2 -1
- package/lib/module/blake3.js.map +1 -1
- package/lib/module/diffie-hellman.js +5 -4
- package/lib/module/diffie-hellman.js.map +1 -1
- package/lib/module/ecdh.js +5 -4
- package/lib/module/ecdh.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/blake3.d.ts.map +1 -1
- package/lib/typescript/diffie-hellman.d.ts.map +1 -1
- package/lib/typescript/ecdh.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/blake3.ts +2 -1
- package/src/diffie-hellman.ts +5 -7
- package/src/ecdh.ts +5 -8
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
#ifndef SIMDUTF_ARM64_SIMD_H
|
|
2
|
+
#define SIMDUTF_ARM64_SIMD_H
|
|
3
|
+
|
|
4
|
+
#include "simdutf.h"
|
|
5
|
+
#include "simdutf/arm64/bitmanipulation.h"
|
|
6
|
+
#include <type_traits>
|
|
7
|
+
|
|
8
|
+
namespace simdutf {
|
|
9
|
+
namespace SIMDUTF_IMPLEMENTATION {
|
|
10
|
+
namespace {
|
|
11
|
+
namespace simd {
|
|
12
|
+
|
|
13
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
14
|
+
namespace {
|
|
15
|
+
// Start of private section with Visual Studio workaround
|
|
16
|
+
|
|
17
|
+
#ifndef simdutf_make_uint8x16_t
|
|
18
|
+
#define simdutf_make_uint8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, \
|
|
19
|
+
x11, x12, x13, x14, x15, x16) \
|
|
20
|
+
([=]() { \
|
|
21
|
+
uint8_t array[16] = {x1, x2, x3, x4, x5, x6, x7, x8, \
|
|
22
|
+
x9, x10, x11, x12, x13, x14, x15, x16}; \
|
|
23
|
+
return vld1q_u8(array); \
|
|
24
|
+
}())
|
|
25
|
+
#endif
|
|
26
|
+
#ifndef simdutf_make_int8x16_t
|
|
27
|
+
#define simdutf_make_int8x16_t(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, \
|
|
28
|
+
x11, x12, x13, x14, x15, x16) \
|
|
29
|
+
([=]() { \
|
|
30
|
+
int8_t array[16] = {x1, x2, x3, x4, x5, x6, x7, x8, \
|
|
31
|
+
x9, x10, x11, x12, x13, x14, x15, x16}; \
|
|
32
|
+
return vld1q_s8(array); \
|
|
33
|
+
}())
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
#ifndef simdutf_make_uint8x8_t
|
|
37
|
+
#define simdutf_make_uint8x8_t(x1, x2, x3, x4, x5, x6, x7, x8) \
|
|
38
|
+
([=]() { \
|
|
39
|
+
uint8_t array[8] = {x1, x2, x3, x4, x5, x6, x7, x8}; \
|
|
40
|
+
return vld1_u8(array); \
|
|
41
|
+
}())
|
|
42
|
+
#endif
|
|
43
|
+
#ifndef simdutf_make_int8x8_t
|
|
44
|
+
#define simdutf_make_int8x8_t(x1, x2, x3, x4, x5, x6, x7, x8) \
|
|
45
|
+
([=]() { \
|
|
46
|
+
int8_t array[8] = {x1, x2, x3, x4, x5, x6, x7, x8}; \
|
|
47
|
+
return vld1_s8(array); \
|
|
48
|
+
}())
|
|
49
|
+
#endif
|
|
50
|
+
#ifndef simdutf_make_uint16x8_t
|
|
51
|
+
#define simdutf_make_uint16x8_t(x1, x2, x3, x4, x5, x6, x7, x8) \
|
|
52
|
+
([=]() { \
|
|
53
|
+
uint16_t array[8] = {x1, x2, x3, x4, x5, x6, x7, x8}; \
|
|
54
|
+
return vld1q_u16(array); \
|
|
55
|
+
}())
|
|
56
|
+
#endif
|
|
57
|
+
#ifndef simdutf_make_int16x8_t
|
|
58
|
+
#define simdutf_make_int16x8_t(x1, x2, x3, x4, x5, x6, x7, x8) \
|
|
59
|
+
([=]() { \
|
|
60
|
+
int16_t array[8] = {x1, x2, x3, x4, x5, x6, x7, x8}; \
|
|
61
|
+
return vld1q_s16(array); \
|
|
62
|
+
}())
|
|
63
|
+
#endif
|
|
64
|
+
|
|
65
|
+
// End of private section with Visual Studio workaround
|
|
66
|
+
} // namespace
|
|
67
|
+
#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
68
|
+
|
|
69
|
+
template <typename T> struct simd8;
|
|
70
|
+
|
|
71
|
+
//
|
|
72
|
+
// Base class of simd8<uint8_t> and simd8<bool>, both of which use uint8x16_t
|
|
73
|
+
// internally.
|
|
74
|
+
//
|
|
75
|
+
template <typename T, typename Mask = simd8<bool>> struct base_u8 {
|
|
76
|
+
uint8x16_t value;
|
|
77
|
+
static const int SIZE = sizeof(value);
|
|
78
|
+
void dump() const {
|
|
79
|
+
#ifdef SIMDUTF_LOGGING
|
|
80
|
+
uint8_t temp[16];
|
|
81
|
+
vst1q_u8(temp, *this);
|
|
82
|
+
printf("[%04x, %04x, %04x, %04x, %04x, %04x, %04x, %04x,%04x, %04x, %04x, "
|
|
83
|
+
"%04x, %04x, %04x, %04x, %04x]\n",
|
|
84
|
+
temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6],
|
|
85
|
+
temp[7], temp[8], temp[9], temp[10], temp[11], temp[12], temp[13],
|
|
86
|
+
temp[14], temp[15]);
|
|
87
|
+
#endif // SIMDUTF_LOGGING
|
|
88
|
+
}
|
|
89
|
+
// Conversion from/to SIMD register
|
|
90
|
+
simdutf_really_inline base_u8(const uint8x16_t _value) : value(_value) {}
|
|
91
|
+
simdutf_really_inline operator const uint8x16_t &() const {
|
|
92
|
+
return this->value;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Bit operations
|
|
96
|
+
simdutf_really_inline simd8<T> operator|(const simd8<T> other) const {
|
|
97
|
+
return vorrq_u8(*this, other);
|
|
98
|
+
}
|
|
99
|
+
simdutf_really_inline simd8<T> operator&(const simd8<T> other) const {
|
|
100
|
+
return vandq_u8(*this, other);
|
|
101
|
+
}
|
|
102
|
+
simdutf_really_inline simd8<T> operator^(const simd8<T> other) const {
|
|
103
|
+
return veorq_u8(*this, other);
|
|
104
|
+
}
|
|
105
|
+
simdutf_really_inline simd8<T> &operator|=(const simd8<T> other) {
|
|
106
|
+
auto this_cast = static_cast<simd8<T> *>(this);
|
|
107
|
+
*this_cast = *this_cast | other;
|
|
108
|
+
return *this_cast;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
friend simdutf_really_inline Mask operator==(const simd8<T> lhs,
|
|
112
|
+
const simd8<T> rhs) {
|
|
113
|
+
return vceqq_u8(lhs, rhs);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
template <int N = 1>
|
|
117
|
+
simdutf_really_inline simd8<T> prev(const simd8<T> prev_chunk) const {
|
|
118
|
+
return vextq_u8(prev_chunk, *this, 16 - N);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// SIMD byte mask type (returned by things like eq and gt)
|
|
123
|
+
template <> struct simd8<bool> : base_u8<bool> {
|
|
124
|
+
static simdutf_really_inline simd8<bool> splat(bool _value) {
|
|
125
|
+
return vmovq_n_u8(uint8_t(-(!!_value)));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
simdutf_really_inline simd8(const uint8x16_t _value)
|
|
129
|
+
: base_u8<bool>(_value) {}
|
|
130
|
+
// False constructor
|
|
131
|
+
simdutf_really_inline simd8() : simd8(vdupq_n_u8(0)) {}
|
|
132
|
+
// Splat constructor
|
|
133
|
+
simdutf_really_inline simd8(bool _value) : simd8(splat(_value)) {}
|
|
134
|
+
simdutf_really_inline void store(uint8_t dst[16]) const {
|
|
135
|
+
return vst1q_u8(dst, *this);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// We return uint32_t instead of uint16_t because that seems to be more
|
|
139
|
+
// efficient for most purposes (cutting it down to uint16_t costs performance
|
|
140
|
+
// in some compilers).
|
|
141
|
+
simdutf_really_inline uint32_t to_bitmask() const {
|
|
142
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
143
|
+
const uint8x16_t bit_mask =
|
|
144
|
+
simdutf_make_uint8x16_t(0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
|
145
|
+
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80);
|
|
146
|
+
#else
|
|
147
|
+
const uint8x16_t bit_mask = {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
|
148
|
+
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
|
|
149
|
+
#endif
|
|
150
|
+
auto minput = *this & bit_mask;
|
|
151
|
+
uint8x16_t tmp = vpaddq_u8(minput, minput);
|
|
152
|
+
tmp = vpaddq_u8(tmp, tmp);
|
|
153
|
+
tmp = vpaddq_u8(tmp, tmp);
|
|
154
|
+
return vgetq_lane_u16(vreinterpretq_u16_u8(tmp), 0);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Returns 4-bit out of each byte, alternating between the high 4 bits and low
|
|
158
|
+
// bits result it is 64 bit. This method is expected to be faster than none()
|
|
159
|
+
// and is equivalent when the vector register is the result of a comparison,
|
|
160
|
+
// with byte values 0xff and 0x00.
|
|
161
|
+
simdutf_really_inline uint64_t to_bitmask64() const {
|
|
162
|
+
return vget_lane_u64(
|
|
163
|
+
vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(*this), 4)), 0);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// Unsigned bytes
|
|
168
|
+
template <> struct simd8<uint8_t> : base_u8<uint8_t> {
|
|
169
|
+
static simdutf_really_inline simd8<uint8_t> splat(uint8_t _value) {
|
|
170
|
+
return vmovq_n_u8(_value);
|
|
171
|
+
}
|
|
172
|
+
static simdutf_really_inline simd8<uint8_t> zero() { return vdupq_n_u8(0); }
|
|
173
|
+
static simdutf_really_inline simd8<uint8_t> load(const uint8_t *values) {
|
|
174
|
+
return vld1q_u8(values);
|
|
175
|
+
}
|
|
176
|
+
simdutf_really_inline simd8(const uint8x16_t _value)
|
|
177
|
+
: base_u8<uint8_t>(_value) {}
|
|
178
|
+
// Zero constructor
|
|
179
|
+
simdutf_really_inline simd8() : simd8(zero()) {}
|
|
180
|
+
// Array constructor
|
|
181
|
+
simdutf_really_inline simd8(const uint8_t values[16]) : simd8(load(values)) {}
|
|
182
|
+
// Splat constructor
|
|
183
|
+
simdutf_really_inline simd8(uint8_t _value) : simd8(splat(_value)) {}
|
|
184
|
+
// Member-by-member initialization
|
|
185
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
186
|
+
simdutf_really_inline
|
|
187
|
+
simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
|
|
188
|
+
uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
|
|
189
|
+
uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
|
|
190
|
+
: simd8(simdutf_make_uint8x16_t(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9,
|
|
191
|
+
v10, v11, v12, v13, v14, v15)) {}
|
|
192
|
+
#else
|
|
193
|
+
simdutf_really_inline
|
|
194
|
+
simd8(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4, uint8_t v5,
|
|
195
|
+
uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9, uint8_t v10,
|
|
196
|
+
uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14, uint8_t v15)
|
|
197
|
+
: simd8(uint8x16_t{v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
|
|
198
|
+
v13, v14, v15}) {}
|
|
199
|
+
#endif
|
|
200
|
+
|
|
201
|
+
// Repeat 16 values as many times as necessary (usually for lookup tables)
|
|
202
|
+
simdutf_really_inline static simd8<uint8_t>
|
|
203
|
+
repeat_16(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, uint8_t v4,
|
|
204
|
+
uint8_t v5, uint8_t v6, uint8_t v7, uint8_t v8, uint8_t v9,
|
|
205
|
+
uint8_t v10, uint8_t v11, uint8_t v12, uint8_t v13, uint8_t v14,
|
|
206
|
+
uint8_t v15) {
|
|
207
|
+
return simd8<uint8_t>(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
|
|
208
|
+
v13, v14, v15);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Store to array
|
|
212
|
+
simdutf_really_inline void store(uint8_t dst[16]) const {
|
|
213
|
+
return vst1q_u8(dst, *this);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Addition/subtraction are the same for signed and unsigned
|
|
217
|
+
simdutf_really_inline simd8<uint8_t>
|
|
218
|
+
operator-(const simd8<uint8_t> other) const {
|
|
219
|
+
return vsubq_u8(*this, other);
|
|
220
|
+
}
|
|
221
|
+
simdutf_really_inline simd8<uint8_t> &operator-=(const simd8<uint8_t> other) {
|
|
222
|
+
*this = *this - other;
|
|
223
|
+
return *this;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Order-specific operations
|
|
227
|
+
simdutf_really_inline uint8_t max_val() const { return vmaxvq_u8(*this); }
|
|
228
|
+
simdutf_really_inline simd8<bool>
|
|
229
|
+
operator>=(const simd8<uint8_t> other) const {
|
|
230
|
+
return vcgeq_u8(*this, other);
|
|
231
|
+
}
|
|
232
|
+
simdutf_really_inline simd8<bool>
|
|
233
|
+
operator>(const simd8<uint8_t> other) const {
|
|
234
|
+
return vcgtq_u8(*this, other);
|
|
235
|
+
}
|
|
236
|
+
// Same as >, but instead of guaranteeing all 1's == true, false = 0 and true
|
|
237
|
+
// = nonzero. For ARM, returns all 1's.
|
|
238
|
+
simdutf_really_inline simd8<uint8_t>
|
|
239
|
+
gt_bits(const simd8<uint8_t> other) const {
|
|
240
|
+
return simd8<uint8_t>(*this > other);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Bit-specific operations
|
|
244
|
+
simdutf_really_inline simd8<bool> any_bits_set(simd8<uint8_t> bits) const {
|
|
245
|
+
return vtstq_u8(*this, bits);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
simdutf_really_inline bool is_ascii() const {
|
|
249
|
+
return this->max_val() < 0b10000000u;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
simdutf_really_inline bool any_bits_set_anywhere() const {
|
|
253
|
+
return this->max_val() != 0;
|
|
254
|
+
}
|
|
255
|
+
template <int N> simdutf_really_inline simd8<uint8_t> shr() const {
|
|
256
|
+
return vshrq_n_u8(*this, N);
|
|
257
|
+
}
|
|
258
|
+
simdutf_really_inline uint16_t sum_bytes() const { return vaddvq_u8(*this); }
|
|
259
|
+
|
|
260
|
+
// Perform a lookup assuming the value is between 0 and 16 (undefined behavior
|
|
261
|
+
// for out of range values)
|
|
262
|
+
template <typename L>
|
|
263
|
+
simdutf_really_inline simd8<L> lookup_16(simd8<L> lookup_table) const {
|
|
264
|
+
return lookup_table.apply_lookup_16_to(*this);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
template <typename L>
|
|
268
|
+
simdutf_really_inline simd8<L>
|
|
269
|
+
lookup_16(L replace0, L replace1, L replace2, L replace3, L replace4,
|
|
270
|
+
L replace5, L replace6, L replace7, L replace8, L replace9,
|
|
271
|
+
L replace10, L replace11, L replace12, L replace13, L replace14,
|
|
272
|
+
L replace15) const {
|
|
273
|
+
return lookup_16(simd8<L>::repeat_16(
|
|
274
|
+
replace0, replace1, replace2, replace3, replace4, replace5, replace6,
|
|
275
|
+
replace7, replace8, replace9, replace10, replace11, replace12,
|
|
276
|
+
replace13, replace14, replace15));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
template <typename T>
|
|
280
|
+
simdutf_really_inline simd8<uint8_t>
|
|
281
|
+
apply_lookup_16_to(const simd8<T> original) const {
|
|
282
|
+
return vqtbl1q_u8(*this, simd8<uint8_t>(original));
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
// Signed bytes
|
|
287
|
+
template <> struct simd8<int8_t> {
|
|
288
|
+
int8x16_t value;
|
|
289
|
+
static const int SIZE = sizeof(value);
|
|
290
|
+
|
|
291
|
+
static simdutf_really_inline simd8<int8_t> splat(int8_t _value) {
|
|
292
|
+
return vmovq_n_s8(_value);
|
|
293
|
+
}
|
|
294
|
+
static simdutf_really_inline simd8<int8_t> zero() { return vdupq_n_s8(0); }
|
|
295
|
+
static simdutf_really_inline simd8<int8_t> load(const int8_t values[16]) {
|
|
296
|
+
return vld1q_s8(values);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Use ST2 instead of UXTL+UXTL2 to interleave zeroes. UXTL is actually a
|
|
300
|
+
// USHLL #0, and shifting in NEON is actually quite slow.
|
|
301
|
+
//
|
|
302
|
+
// While this needs the registers to be in a specific order, bigger cores can
|
|
303
|
+
// interleave these with no overhead, and it still performs decently on little
|
|
304
|
+
// cores.
|
|
305
|
+
// movi v1.3d, #0
|
|
306
|
+
// mov v0.16b, value[0]
|
|
307
|
+
// st2 {v0.16b, v1.16b}, [ptr], #32
|
|
308
|
+
// mov v0.16b, value[1]
|
|
309
|
+
// st2 {v0.16b, v1.16b}, [ptr], #32
|
|
310
|
+
// ...
|
|
311
|
+
template <endianness big_endian>
|
|
312
|
+
simdutf_really_inline void store_ascii_as_utf16(char16_t *p) const {
|
|
313
|
+
simdutf_constexpr auto matches = match_system(big_endian);
|
|
314
|
+
const int8x16x2_t pair = matches
|
|
315
|
+
? int8x16x2_t{{this->value, vmovq_n_s8(0)}}
|
|
316
|
+
: int8x16x2_t{{vmovq_n_s8(0), this->value}};
|
|
317
|
+
vst2q_s8(reinterpret_cast<int8_t *>(p), pair);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// In places where the table can be reused, which is most uses in simdutf, it
|
|
321
|
+
// is worth it to do 4 table lookups, as there is no direct zero extension
|
|
322
|
+
// from u8 to u32.
|
|
323
|
+
simdutf_really_inline void store_ascii_as_utf32_tbl(char32_t *p) const {
|
|
324
|
+
const simd8<uint8_t> tb1{0, 255, 255, 255, 1, 255, 255, 255,
|
|
325
|
+
2, 255, 255, 255, 3, 255, 255, 255};
|
|
326
|
+
const simd8<uint8_t> tb2{4, 255, 255, 255, 5, 255, 255, 255,
|
|
327
|
+
6, 255, 255, 255, 7, 255, 255, 255};
|
|
328
|
+
const simd8<uint8_t> tb3{8, 255, 255, 255, 9, 255, 255, 255,
|
|
329
|
+
10, 255, 255, 255, 11, 255, 255, 255};
|
|
330
|
+
const simd8<uint8_t> tb4{12, 255, 255, 255, 13, 255, 255, 255,
|
|
331
|
+
14, 255, 255, 255, 15, 255, 255, 255};
|
|
332
|
+
|
|
333
|
+
// encourage store pairing and interleaving
|
|
334
|
+
const auto shuf1 = this->apply_lookup_16_to(tb1);
|
|
335
|
+
const auto shuf2 = this->apply_lookup_16_to(tb2);
|
|
336
|
+
shuf1.store(reinterpret_cast<int8_t *>(p));
|
|
337
|
+
shuf2.store(reinterpret_cast<int8_t *>(p + 4));
|
|
338
|
+
|
|
339
|
+
const auto shuf3 = this->apply_lookup_16_to(tb3);
|
|
340
|
+
const auto shuf4 = this->apply_lookup_16_to(tb4);
|
|
341
|
+
shuf3.store(reinterpret_cast<int8_t *>(p + 8));
|
|
342
|
+
shuf4.store(reinterpret_cast<int8_t *>(p + 12));
|
|
343
|
+
}
|
|
344
|
+
// Conversion from/to SIMD register
|
|
345
|
+
simdutf_really_inline simd8(const int8x16_t _value) : value{_value} {}
|
|
346
|
+
simdutf_really_inline operator const int8x16_t &() const {
|
|
347
|
+
return this->value;
|
|
348
|
+
}
|
|
349
|
+
#ifndef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
350
|
+
simdutf_really_inline operator const uint8x16_t() const {
|
|
351
|
+
return vreinterpretq_u8_s8(this->value);
|
|
352
|
+
}
|
|
353
|
+
#endif
|
|
354
|
+
simdutf_really_inline operator int8x16_t &() { return this->value; }
|
|
355
|
+
|
|
356
|
+
// Zero constructor
|
|
357
|
+
simdutf_really_inline simd8() : simd8(zero()) {}
|
|
358
|
+
// Splat constructor
|
|
359
|
+
simdutf_really_inline simd8(int8_t _value) : simd8(splat(_value)) {}
|
|
360
|
+
// Array constructor
|
|
361
|
+
simdutf_really_inline simd8(const int8_t *values) : simd8(load(values)) {}
|
|
362
|
+
// Member-by-member initialization
|
|
363
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
364
|
+
simdutf_really_inline simd8(int8_t v0, int8_t v1, int8_t v2, int8_t v3,
|
|
365
|
+
int8_t v4, int8_t v5, int8_t v6, int8_t v7,
|
|
366
|
+
int8_t v8, int8_t v9, int8_t v10, int8_t v11,
|
|
367
|
+
int8_t v12, int8_t v13, int8_t v14, int8_t v15)
|
|
368
|
+
: simd8(simdutf_make_int8x16_t(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9,
|
|
369
|
+
v10, v11, v12, v13, v14, v15)) {}
|
|
370
|
+
#else
|
|
371
|
+
simdutf_really_inline simd8(int8_t v0, int8_t v1, int8_t v2, int8_t v3,
|
|
372
|
+
int8_t v4, int8_t v5, int8_t v6, int8_t v7,
|
|
373
|
+
int8_t v8, int8_t v9, int8_t v10, int8_t v11,
|
|
374
|
+
int8_t v12, int8_t v13, int8_t v14, int8_t v15)
|
|
375
|
+
: simd8(int8x16_t{v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
|
|
376
|
+
v13, v14, v15}) {}
|
|
377
|
+
#endif
|
|
378
|
+
|
|
379
|
+
// Store to array
|
|
380
|
+
simdutf_really_inline void store(int8_t dst[16]) const {
|
|
381
|
+
return vst1q_s8(dst, value);
|
|
382
|
+
}
|
|
383
|
+
// Explicit conversion to/from unsigned
|
|
384
|
+
//
|
|
385
|
+
// Under Visual Studio/ARM64 uint8x16_t and int8x16_t are apparently the same
|
|
386
|
+
// type. In theory, we could check this occurrence with std::same_as and
|
|
387
|
+
// std::enabled_if but it is C++14 and relatively ugly and hard to read.
|
|
388
|
+
#ifndef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
389
|
+
simdutf_really_inline explicit simd8(const uint8x16_t other)
|
|
390
|
+
: simd8(vreinterpretq_s8_u8(other)) {}
|
|
391
|
+
#endif
|
|
392
|
+
simdutf_really_inline operator simd8<uint8_t>() const {
|
|
393
|
+
return vreinterpretq_u8_s8(this->value);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
simdutf_really_inline simd8<int8_t>
|
|
397
|
+
operator|(const simd8<int8_t> other) const {
|
|
398
|
+
return vorrq_s8(value, other.value);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
simdutf_really_inline int8_t max_val() const { return vmaxvq_s8(value); }
|
|
402
|
+
simdutf_really_inline int8_t min_val() const { return vminvq_s8(value); }
|
|
403
|
+
simdutf_really_inline bool is_ascii() const { return this->min_val() >= 0; }
|
|
404
|
+
|
|
405
|
+
// Order-sensitive comparisons
|
|
406
|
+
simdutf_really_inline simd8<bool> operator>(const simd8<int8_t> other) const {
|
|
407
|
+
return vcgtq_s8(value, other.value);
|
|
408
|
+
}
|
|
409
|
+
simdutf_really_inline simd8<bool> operator<(const simd8<int8_t> other) const {
|
|
410
|
+
return vcltq_s8(value, other.value);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
template <typename T>
|
|
414
|
+
simdutf_really_inline simd8<int8_t>
|
|
415
|
+
apply_lookup_16_to(const simd8<T> original) const {
|
|
416
|
+
return vqtbl1q_s8(*this, simd8<uint8_t>(original));
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
template <typename T> struct simd8x64 {
|
|
421
|
+
static constexpr int NUM_CHUNKS = 64 / sizeof(simd8<T>);
|
|
422
|
+
static_assert(NUM_CHUNKS == 4,
|
|
423
|
+
"ARM kernel should use four registers per 64-byte block.");
|
|
424
|
+
simd8<T> chunks[NUM_CHUNKS];
|
|
425
|
+
|
|
426
|
+
simd8x64(const simd8x64<T> &o) = delete; // no copy allowed
|
|
427
|
+
simd8x64<T> &
|
|
428
|
+
operator=(const simd8<T> other) = delete; // no assignment allowed
|
|
429
|
+
simd8x64() = delete; // no default constructor allowed
|
|
430
|
+
|
|
431
|
+
simdutf_really_inline simd8x64(const simd8<T> chunk0, const simd8<T> chunk1,
|
|
432
|
+
const simd8<T> chunk2, const simd8<T> chunk3)
|
|
433
|
+
: chunks{chunk0, chunk1, chunk2, chunk3} {}
|
|
434
|
+
simdutf_really_inline simd8x64(const T *ptr)
|
|
435
|
+
: chunks{simd8<T>::load(ptr),
|
|
436
|
+
simd8<T>::load(ptr + sizeof(simd8<T>) / sizeof(T)),
|
|
437
|
+
simd8<T>::load(ptr + 2 * sizeof(simd8<T>) / sizeof(T)),
|
|
438
|
+
simd8<T>::load(ptr + 3 * sizeof(simd8<T>) / sizeof(T))} {}
|
|
439
|
+
|
|
440
|
+
simdutf_really_inline void store(T *ptr) const {
|
|
441
|
+
this->chunks[0].store(ptr + sizeof(simd8<T>) * 0 / sizeof(T));
|
|
442
|
+
this->chunks[1].store(ptr + sizeof(simd8<T>) * 1 / sizeof(T));
|
|
443
|
+
this->chunks[2].store(ptr + sizeof(simd8<T>) * 2 / sizeof(T));
|
|
444
|
+
this->chunks[3].store(ptr + sizeof(simd8<T>) * 3 / sizeof(T));
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
simdutf_really_inline simd8x64<T> &operator|=(const simd8x64<T> &other) {
|
|
448
|
+
this->chunks[0] |= other.chunks[0];
|
|
449
|
+
this->chunks[1] |= other.chunks[1];
|
|
450
|
+
this->chunks[2] |= other.chunks[2];
|
|
451
|
+
this->chunks[3] |= other.chunks[3];
|
|
452
|
+
return *this;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
simdutf_really_inline simd8<T> reduce_or() const {
|
|
456
|
+
return (this->chunks[0] | this->chunks[1]) |
|
|
457
|
+
(this->chunks[2] | this->chunks[3]);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
simdutf_really_inline bool is_ascii() const { return reduce_or().is_ascii(); }
|
|
461
|
+
|
|
462
|
+
template <endianness endian>
|
|
463
|
+
simdutf_really_inline void store_ascii_as_utf16(char16_t *ptr) const {
|
|
464
|
+
this->chunks[0].template store_ascii_as_utf16<endian>(ptr +
|
|
465
|
+
sizeof(simd8<T>) * 0);
|
|
466
|
+
this->chunks[1].template store_ascii_as_utf16<endian>(ptr +
|
|
467
|
+
sizeof(simd8<T>) * 1);
|
|
468
|
+
this->chunks[2].template store_ascii_as_utf16<endian>(ptr +
|
|
469
|
+
sizeof(simd8<T>) * 2);
|
|
470
|
+
this->chunks[3].template store_ascii_as_utf16<endian>(ptr +
|
|
471
|
+
sizeof(simd8<T>) * 3);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
simdutf_really_inline void store_ascii_as_utf32(char32_t *ptr) const {
|
|
475
|
+
this->chunks[0].store_ascii_as_utf32_tbl(ptr + sizeof(simd8<T>) * 0);
|
|
476
|
+
this->chunks[1].store_ascii_as_utf32_tbl(ptr + sizeof(simd8<T>) * 1);
|
|
477
|
+
this->chunks[2].store_ascii_as_utf32_tbl(ptr + sizeof(simd8<T>) * 2);
|
|
478
|
+
this->chunks[3].store_ascii_as_utf32_tbl(ptr + sizeof(simd8<T>) * 3);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
simdutf_really_inline uint64_t to_bitmask() const {
|
|
482
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
483
|
+
const uint8x16_t bit_mask =
|
|
484
|
+
simdutf_make_uint8x16_t(0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
|
485
|
+
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80);
|
|
486
|
+
#else
|
|
487
|
+
const uint8x16_t bit_mask = {0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
|
488
|
+
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
|
|
489
|
+
#endif
|
|
490
|
+
// Add each of the elements next to each other, successively, to stuff each
|
|
491
|
+
// 8 byte mask into one.
|
|
492
|
+
uint8x16_t sum0 =
|
|
493
|
+
vpaddq_u8(vandq_u8(uint8x16_t(this->chunks[0]), bit_mask),
|
|
494
|
+
vandq_u8(uint8x16_t(this->chunks[1]), bit_mask));
|
|
495
|
+
uint8x16_t sum1 =
|
|
496
|
+
vpaddq_u8(vandq_u8(uint8x16_t(this->chunks[2]), bit_mask),
|
|
497
|
+
vandq_u8(uint8x16_t(this->chunks[3]), bit_mask));
|
|
498
|
+
sum0 = vpaddq_u8(sum0, sum1);
|
|
499
|
+
sum0 = vpaddq_u8(sum0, sum0);
|
|
500
|
+
return vgetq_lane_u64(vreinterpretq_u64_u8(sum0), 0);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
simdutf_really_inline uint64_t lt(const T m) const {
|
|
504
|
+
const simd8<T> mask = simd8<T>::splat(m);
|
|
505
|
+
return simd8x64<bool>(this->chunks[0] < mask, this->chunks[1] < mask,
|
|
506
|
+
this->chunks[2] < mask, this->chunks[3] < mask)
|
|
507
|
+
.to_bitmask();
|
|
508
|
+
}
|
|
509
|
+
simdutf_really_inline uint64_t gt(const T m) const {
|
|
510
|
+
const simd8<T> mask = simd8<T>::splat(m);
|
|
511
|
+
return simd8x64<bool>(this->chunks[0] > mask, this->chunks[1] > mask,
|
|
512
|
+
this->chunks[2] > mask, this->chunks[3] > mask)
|
|
513
|
+
.to_bitmask();
|
|
514
|
+
}
|
|
515
|
+
simdutf_really_inline uint64_t gteq(const T m) const {
|
|
516
|
+
const simd8<T> mask = simd8<T>::splat(m);
|
|
517
|
+
return simd8x64<bool>(this->chunks[0] >= mask, this->chunks[1] >= mask,
|
|
518
|
+
this->chunks[2] >= mask, this->chunks[3] >= mask)
|
|
519
|
+
.to_bitmask();
|
|
520
|
+
}
|
|
521
|
+
simdutf_really_inline uint64_t gteq_unsigned(const uint8_t m) const {
|
|
522
|
+
const simd8<uint8_t> mask = simd8<uint8_t>::splat(m);
|
|
523
|
+
return simd8x64<bool>(simd8<uint8_t>(uint8x16_t(this->chunks[0])) >= mask,
|
|
524
|
+
simd8<uint8_t>(uint8x16_t(this->chunks[1])) >= mask,
|
|
525
|
+
simd8<uint8_t>(uint8x16_t(this->chunks[2])) >= mask,
|
|
526
|
+
simd8<uint8_t>(uint8x16_t(this->chunks[3])) >= mask)
|
|
527
|
+
.to_bitmask();
|
|
528
|
+
}
|
|
529
|
+
}; // struct simd8x64<T>
|
|
530
|
+
#include "simdutf/arm64/simd16-inl.h"
|
|
531
|
+
#include "simdutf/arm64/simd32-inl.h"
|
|
532
|
+
#include "simdutf/arm64/simd64-inl.h"
|
|
533
|
+
|
|
534
|
+
simdutf_really_inline simd64<uint64_t> sum_8bytes(const simd8<uint8_t> v) {
|
|
535
|
+
// We do it as 3 instructions. There might be a faster way.
|
|
536
|
+
// We hope that these 3 instructions are cheap.
|
|
537
|
+
uint16x8_t first_sum = vpaddlq_u8(v);
|
|
538
|
+
uint32x4_t second_sum = vpaddlq_u16(first_sum);
|
|
539
|
+
return vpaddlq_u32(second_sum);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
} // namespace simd
|
|
543
|
+
} // unnamed namespace
|
|
544
|
+
} // namespace SIMDUTF_IMPLEMENTATION
|
|
545
|
+
} // namespace simdutf
|
|
546
|
+
|
|
547
|
+
#endif // SIMDUTF_ARM64_SIMD_H
|