react-native-quick-crypto 1.0.19 → 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/package.json +2 -2
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/* From
|
|
2
|
+
https://github.com/endorno/pytorch/blob/master/torch/lib/TH/generic/simd/simd.h
|
|
3
|
+
Highly modified.
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2016- Facebook, Inc (Adam Paszke)
|
|
6
|
+
Copyright (c) 2014- Facebook, Inc (Soumith Chintala)
|
|
7
|
+
Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
|
|
8
|
+
Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu)
|
|
9
|
+
Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
|
|
10
|
+
Copyright (c) 2011-2013 NYU (Clement Farabet)
|
|
11
|
+
Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou,
|
|
12
|
+
Iain Melvin, Jason Weston) Copyright (c) 2006 Idiap Research Institute
|
|
13
|
+
(Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert,
|
|
14
|
+
Samy Bengio, Johnny Mariethoz)
|
|
15
|
+
|
|
16
|
+
All rights reserved.
|
|
17
|
+
|
|
18
|
+
Redistribution and use in source and binary forms, with or without
|
|
19
|
+
modification, are permitted provided that the following conditions are met:
|
|
20
|
+
|
|
21
|
+
1. Redistributions of source code must retain the above copyright
|
|
22
|
+
notice, this list of conditions and the following disclaimer.
|
|
23
|
+
|
|
24
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer in the
|
|
26
|
+
documentation and/or other materials provided with the distribution.
|
|
27
|
+
|
|
28
|
+
3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC Laboratories
|
|
29
|
+
America and IDIAP Research Institute nor the names of its contributors may be
|
|
30
|
+
used to endorse or promote products derived from this software without
|
|
31
|
+
specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
34
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
35
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
36
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
37
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
38
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
39
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
40
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
41
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
42
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
43
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef SIMDutf_INTERNAL_ISADETECTION_H
|
|
47
|
+
#define SIMDutf_INTERNAL_ISADETECTION_H
|
|
48
|
+
|
|
49
|
+
#include <cstdint>
|
|
50
|
+
#include <cstdlib>
|
|
51
|
+
#if defined(_MSC_VER)
|
|
52
|
+
#include <intrin.h>
|
|
53
|
+
#elif defined(HAVE_GCC_GET_CPUID) && defined(USE_GCC_GET_CPUID)
|
|
54
|
+
#include <cpuid.h>
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#include "simdutf/portability.h"
|
|
58
|
+
|
|
59
|
+
// RISC-V ISA detection utilities
|
|
60
|
+
#if SIMDUTF_IS_RISCV64 && defined(__linux__)
|
|
61
|
+
#include <unistd.h> // for syscall
|
|
62
|
+
// We define these ourselves, for backwards compatibility
|
|
63
|
+
struct simdutf_riscv_hwprobe {
|
|
64
|
+
int64_t key;
|
|
65
|
+
uint64_t value;
|
|
66
|
+
};
|
|
67
|
+
#define simdutf_riscv_hwprobe(...) syscall(258, __VA_ARGS__)
|
|
68
|
+
#define SIMDUTF_RISCV_HWPROBE_KEY_IMA_EXT_0 4
|
|
69
|
+
#define SIMDUTF_RISCV_HWPROBE_IMA_V (1 << 2)
|
|
70
|
+
#define SIMDUTF_RISCV_HWPROBE_EXT_ZVBB (1 << 17)
|
|
71
|
+
#endif // SIMDUTF_IS_RISCV64 && defined(__linux__)
|
|
72
|
+
|
|
73
|
+
#if defined(__loongarch__) && defined(__linux__)
|
|
74
|
+
#include <sys/auxv.h>
|
|
75
|
+
// bits/hwcap.h
|
|
76
|
+
// #define HWCAP_LOONGARCH_LSX (1 << 4)
|
|
77
|
+
// #define HWCAP_LOONGARCH_LASX (1 << 5)
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
namespace simdutf {
|
|
81
|
+
namespace internal {
|
|
82
|
+
|
|
83
|
+
enum instruction_set {
|
|
84
|
+
DEFAULT = 0x0,
|
|
85
|
+
NEON = 0x1,
|
|
86
|
+
AVX2 = 0x4,
|
|
87
|
+
SSE42 = 0x8,
|
|
88
|
+
PCLMULQDQ = 0x10,
|
|
89
|
+
BMI1 = 0x20,
|
|
90
|
+
BMI2 = 0x40,
|
|
91
|
+
ALTIVEC = 0x80,
|
|
92
|
+
AVX512F = 0x100,
|
|
93
|
+
AVX512DQ = 0x200,
|
|
94
|
+
AVX512IFMA = 0x400,
|
|
95
|
+
AVX512PF = 0x800,
|
|
96
|
+
AVX512ER = 0x1000,
|
|
97
|
+
AVX512CD = 0x2000,
|
|
98
|
+
AVX512BW = 0x4000,
|
|
99
|
+
AVX512VL = 0x8000,
|
|
100
|
+
AVX512VBMI2 = 0x10000,
|
|
101
|
+
AVX512VPOPCNTDQ = 0x2000,
|
|
102
|
+
RVV = 0x4000,
|
|
103
|
+
ZVBB = 0x8000,
|
|
104
|
+
LSX = 0x40000,
|
|
105
|
+
LASX = 0x80000,
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
#if defined(__PPC64__)
|
|
109
|
+
|
|
110
|
+
static inline uint32_t detect_supported_architectures() {
|
|
111
|
+
return instruction_set::ALTIVEC;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
#elif SIMDUTF_IS_RISCV64
|
|
115
|
+
|
|
116
|
+
static inline uint32_t detect_supported_architectures() {
|
|
117
|
+
uint32_t host_isa = instruction_set::DEFAULT;
|
|
118
|
+
#if SIMDUTF_IS_RVV
|
|
119
|
+
host_isa |= instruction_set::RVV;
|
|
120
|
+
#endif
|
|
121
|
+
#if SIMDUTF_IS_ZVBB
|
|
122
|
+
host_isa |= instruction_set::ZVBB;
|
|
123
|
+
#endif
|
|
124
|
+
#if defined(__linux__)
|
|
125
|
+
simdutf_riscv_hwprobe probes[] = {{SIMDUTF_RISCV_HWPROBE_KEY_IMA_EXT_0, 0}};
|
|
126
|
+
long ret = simdutf_riscv_hwprobe(&probes, sizeof probes / sizeof *probes, 0,
|
|
127
|
+
nullptr, 0);
|
|
128
|
+
if (ret == 0) {
|
|
129
|
+
uint64_t extensions = probes[0].value;
|
|
130
|
+
if (extensions & SIMDUTF_RISCV_HWPROBE_IMA_V)
|
|
131
|
+
host_isa |= instruction_set::RVV;
|
|
132
|
+
if (extensions & SIMDUTF_RISCV_HWPROBE_EXT_ZVBB)
|
|
133
|
+
host_isa |= instruction_set::ZVBB;
|
|
134
|
+
}
|
|
135
|
+
#endif
|
|
136
|
+
#if defined(RUN_IN_SPIKE_SIMULATOR)
|
|
137
|
+
// Proxy Kernel does not implement yet hwprobe syscall
|
|
138
|
+
host_isa |= instruction_set::RVV;
|
|
139
|
+
#endif
|
|
140
|
+
return host_isa;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#elif defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
|
|
144
|
+
|
|
145
|
+
static inline uint32_t detect_supported_architectures() {
|
|
146
|
+
return instruction_set::NEON;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
#elif defined(__x86_64__) || defined(_M_AMD64) // x64
|
|
150
|
+
|
|
151
|
+
namespace {
|
|
152
|
+
namespace cpuid_bit {
|
|
153
|
+
// Can be found on Intel ISA Reference for CPUID
|
|
154
|
+
|
|
155
|
+
// EAX = 0x01
|
|
156
|
+
constexpr uint32_t pclmulqdq = uint32_t(1)
|
|
157
|
+
<< 1; ///< @private bit 1 of ECX for EAX=0x1
|
|
158
|
+
constexpr uint32_t sse42 = uint32_t(1)
|
|
159
|
+
<< 20; ///< @private bit 20 of ECX for EAX=0x1
|
|
160
|
+
constexpr uint32_t osxsave =
|
|
161
|
+
(uint32_t(1) << 26) |
|
|
162
|
+
(uint32_t(1) << 27); ///< @private bits 26+27 of ECX for EAX=0x1
|
|
163
|
+
|
|
164
|
+
// EAX = 0x7f (Structured Extended Feature Flags), ECX = 0x00 (Sub-leaf)
|
|
165
|
+
// See: "Table 3-8. Information Returned by CPUID Instruction"
|
|
166
|
+
namespace ebx {
|
|
167
|
+
constexpr uint32_t bmi1 = uint32_t(1) << 3;
|
|
168
|
+
constexpr uint32_t avx2 = uint32_t(1) << 5;
|
|
169
|
+
constexpr uint32_t bmi2 = uint32_t(1) << 8;
|
|
170
|
+
constexpr uint32_t avx512f = uint32_t(1) << 16;
|
|
171
|
+
constexpr uint32_t avx512dq = uint32_t(1) << 17;
|
|
172
|
+
constexpr uint32_t avx512ifma = uint32_t(1) << 21;
|
|
173
|
+
constexpr uint32_t avx512cd = uint32_t(1) << 28;
|
|
174
|
+
constexpr uint32_t avx512bw = uint32_t(1) << 30;
|
|
175
|
+
constexpr uint32_t avx512vl = uint32_t(1) << 31;
|
|
176
|
+
} // namespace ebx
|
|
177
|
+
|
|
178
|
+
namespace ecx {
|
|
179
|
+
constexpr uint32_t avx512vbmi = uint32_t(1) << 1;
|
|
180
|
+
constexpr uint32_t avx512vbmi2 = uint32_t(1) << 6;
|
|
181
|
+
constexpr uint32_t avx512vnni = uint32_t(1) << 11;
|
|
182
|
+
constexpr uint32_t avx512bitalg = uint32_t(1) << 12;
|
|
183
|
+
constexpr uint32_t avx512vpopcnt = uint32_t(1) << 14;
|
|
184
|
+
} // namespace ecx
|
|
185
|
+
namespace edx {
|
|
186
|
+
constexpr uint32_t avx512vp2intersect = uint32_t(1) << 8;
|
|
187
|
+
}
|
|
188
|
+
namespace xcr0_bit {
|
|
189
|
+
constexpr uint64_t avx256_saved = uint64_t(1) << 2; ///< @private bit 2 = AVX
|
|
190
|
+
constexpr uint64_t avx512_saved =
|
|
191
|
+
uint64_t(7) << 5; ///< @private bits 5,6,7 = opmask, ZMM_hi256, hi16_ZMM
|
|
192
|
+
} // namespace xcr0_bit
|
|
193
|
+
} // namespace cpuid_bit
|
|
194
|
+
} // namespace
|
|
195
|
+
|
|
196
|
+
static inline void cpuid(uint32_t *eax, uint32_t *ebx, uint32_t *ecx,
|
|
197
|
+
uint32_t *edx) {
|
|
198
|
+
#if defined(_MSC_VER)
|
|
199
|
+
int cpu_info[4];
|
|
200
|
+
__cpuidex(cpu_info, *eax, *ecx);
|
|
201
|
+
*eax = cpu_info[0];
|
|
202
|
+
*ebx = cpu_info[1];
|
|
203
|
+
*ecx = cpu_info[2];
|
|
204
|
+
*edx = cpu_info[3];
|
|
205
|
+
#elif defined(HAVE_GCC_GET_CPUID) && defined(USE_GCC_GET_CPUID)
|
|
206
|
+
uint32_t level = *eax;
|
|
207
|
+
__get_cpuid(level, eax, ebx, ecx, edx);
|
|
208
|
+
#else
|
|
209
|
+
uint32_t a = *eax, b, c = *ecx, d;
|
|
210
|
+
asm volatile("cpuid\n\t" : "+a"(a), "=b"(b), "+c"(c), "=d"(d));
|
|
211
|
+
*eax = a;
|
|
212
|
+
*ebx = b;
|
|
213
|
+
*ecx = c;
|
|
214
|
+
*edx = d;
|
|
215
|
+
#endif
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
static inline uint64_t xgetbv() {
|
|
219
|
+
#if defined(_MSC_VER)
|
|
220
|
+
return _xgetbv(0);
|
|
221
|
+
#else
|
|
222
|
+
uint32_t xcr0_lo, xcr0_hi;
|
|
223
|
+
asm volatile("xgetbv\n\t" : "=a"(xcr0_lo), "=d"(xcr0_hi) : "c"(0));
|
|
224
|
+
return xcr0_lo | ((uint64_t)xcr0_hi << 32);
|
|
225
|
+
#endif
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
static inline uint32_t detect_supported_architectures() {
|
|
229
|
+
uint32_t eax;
|
|
230
|
+
uint32_t ebx = 0;
|
|
231
|
+
uint32_t ecx = 0;
|
|
232
|
+
uint32_t edx = 0;
|
|
233
|
+
uint32_t host_isa = 0x0;
|
|
234
|
+
|
|
235
|
+
// EBX for EAX=0x1
|
|
236
|
+
eax = 0x1;
|
|
237
|
+
cpuid(&eax, &ebx, &ecx, &edx);
|
|
238
|
+
|
|
239
|
+
if (ecx & cpuid_bit::sse42) {
|
|
240
|
+
host_isa |= instruction_set::SSE42;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (ecx & cpuid_bit::pclmulqdq) {
|
|
244
|
+
host_isa |= instruction_set::PCLMULQDQ;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if ((ecx & cpuid_bit::osxsave) != cpuid_bit::osxsave) {
|
|
248
|
+
return host_isa;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// xgetbv for checking if the OS saves registers
|
|
252
|
+
uint64_t xcr0 = xgetbv();
|
|
253
|
+
|
|
254
|
+
if ((xcr0 & cpuid_bit::xcr0_bit::avx256_saved) == 0) {
|
|
255
|
+
return host_isa;
|
|
256
|
+
}
|
|
257
|
+
// ECX for EAX=0x7
|
|
258
|
+
eax = 0x7;
|
|
259
|
+
ecx = 0x0; // Sub-leaf = 0
|
|
260
|
+
cpuid(&eax, &ebx, &ecx, &edx);
|
|
261
|
+
if (ebx & cpuid_bit::ebx::avx2) {
|
|
262
|
+
host_isa |= instruction_set::AVX2;
|
|
263
|
+
}
|
|
264
|
+
if (ebx & cpuid_bit::ebx::bmi1) {
|
|
265
|
+
host_isa |= instruction_set::BMI1;
|
|
266
|
+
}
|
|
267
|
+
if (ebx & cpuid_bit::ebx::bmi2) {
|
|
268
|
+
host_isa |= instruction_set::BMI2;
|
|
269
|
+
}
|
|
270
|
+
if (!((xcr0 & cpuid_bit::xcr0_bit::avx512_saved) ==
|
|
271
|
+
cpuid_bit::xcr0_bit::avx512_saved)) {
|
|
272
|
+
return host_isa;
|
|
273
|
+
}
|
|
274
|
+
if (ebx & cpuid_bit::ebx::avx512f) {
|
|
275
|
+
host_isa |= instruction_set::AVX512F;
|
|
276
|
+
}
|
|
277
|
+
if (ebx & cpuid_bit::ebx::avx512bw) {
|
|
278
|
+
host_isa |= instruction_set::AVX512BW;
|
|
279
|
+
}
|
|
280
|
+
if (ebx & cpuid_bit::ebx::avx512cd) {
|
|
281
|
+
host_isa |= instruction_set::AVX512CD;
|
|
282
|
+
}
|
|
283
|
+
if (ebx & cpuid_bit::ebx::avx512dq) {
|
|
284
|
+
host_isa |= instruction_set::AVX512DQ;
|
|
285
|
+
}
|
|
286
|
+
if (ebx & cpuid_bit::ebx::avx512vl) {
|
|
287
|
+
host_isa |= instruction_set::AVX512VL;
|
|
288
|
+
}
|
|
289
|
+
if (ecx & cpuid_bit::ecx::avx512vbmi2) {
|
|
290
|
+
host_isa |= instruction_set::AVX512VBMI2;
|
|
291
|
+
}
|
|
292
|
+
if (ecx & cpuid_bit::ecx::avx512vpopcnt) {
|
|
293
|
+
host_isa |= instruction_set::AVX512VPOPCNTDQ;
|
|
294
|
+
}
|
|
295
|
+
return host_isa;
|
|
296
|
+
}
|
|
297
|
+
#elif defined(__loongarch__)
|
|
298
|
+
|
|
299
|
+
static inline uint32_t detect_supported_architectures() {
|
|
300
|
+
uint32_t host_isa = instruction_set::DEFAULT;
|
|
301
|
+
#if defined(__linux__)
|
|
302
|
+
uint64_t hwcap = 0;
|
|
303
|
+
hwcap = getauxval(AT_HWCAP);
|
|
304
|
+
if (hwcap & HWCAP_LOONGARCH_LSX) {
|
|
305
|
+
host_isa |= instruction_set::LSX;
|
|
306
|
+
}
|
|
307
|
+
if (hwcap & HWCAP_LOONGARCH_LASX) {
|
|
308
|
+
host_isa |= instruction_set::LASX;
|
|
309
|
+
}
|
|
310
|
+
#endif
|
|
311
|
+
return host_isa;
|
|
312
|
+
}
|
|
313
|
+
#else // fallback
|
|
314
|
+
|
|
315
|
+
// includes 32-bit ARM.
|
|
316
|
+
static inline uint32_t detect_supported_architectures() {
|
|
317
|
+
return instruction_set::DEFAULT;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
#endif // end SIMD extension detection code
|
|
321
|
+
|
|
322
|
+
} // namespace internal
|
|
323
|
+
} // namespace simdutf
|
|
324
|
+
|
|
325
|
+
#endif // SIMDutf_INTERNAL_ISADETECTION_H
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
#ifndef SIMDUTF_PORTABILITY_H
|
|
2
|
+
#define SIMDUTF_PORTABILITY_H
|
|
3
|
+
|
|
4
|
+
#include "simdutf/compiler_check.h"
|
|
5
|
+
|
|
6
|
+
#include <cfloat>
|
|
7
|
+
#include <cstddef>
|
|
8
|
+
#include <cstdint>
|
|
9
|
+
#include <cstdlib>
|
|
10
|
+
#ifndef _WIN32
|
|
11
|
+
// strcasecmp, strncasecmp
|
|
12
|
+
#include <strings.h>
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
#if defined(__apple_build_version__)
|
|
16
|
+
#if __apple_build_version__ < 14000000
|
|
17
|
+
#define SIMDUTF_SPAN_DISABLED \
|
|
18
|
+
1 // apple-clang/13 doesn't support std::convertible_to
|
|
19
|
+
#endif
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
#if SIMDUTF_CPLUSPLUS20
|
|
23
|
+
#include <version>
|
|
24
|
+
#if __cpp_concepts >= 201907L && __cpp_lib_span >= 202002L && \
|
|
25
|
+
!defined(SIMDUTF_SPAN_DISABLED)
|
|
26
|
+
#define SIMDUTF_SPAN 1
|
|
27
|
+
#endif // __cpp_concepts >= 201907L && __cpp_lib_span >= 202002L
|
|
28
|
+
#if __cpp_lib_atomic_ref >= 201806L
|
|
29
|
+
#define SIMDUTF_ATOMIC_REF 1
|
|
30
|
+
#endif // __cpp_lib_atomic_ref
|
|
31
|
+
#if __has_cpp_attribute(maybe_unused) >= 201603L
|
|
32
|
+
#define SIMDUTF_MAYBE_UNUSED_AVAILABLE 1
|
|
33
|
+
#endif // __has_cpp_attribute(maybe_unused) >= 201603L
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* We want to check that it is actually a little endian system at
|
|
38
|
+
* compile-time.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
|
|
42
|
+
#define SIMDUTF_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
|
43
|
+
#elif defined(_WIN32)
|
|
44
|
+
#define SIMDUTF_IS_BIG_ENDIAN 0
|
|
45
|
+
#else
|
|
46
|
+
#if defined(__APPLE__) || \
|
|
47
|
+
defined(__FreeBSD__) // defined __BYTE_ORDER__ && defined
|
|
48
|
+
// __ORDER_BIG_ENDIAN__
|
|
49
|
+
#include <machine/endian.h>
|
|
50
|
+
#elif defined(sun) || \
|
|
51
|
+
defined(__sun) // defined(__APPLE__) || defined(__FreeBSD__)
|
|
52
|
+
#include <sys/byteorder.h>
|
|
53
|
+
#else // defined(__APPLE__) || defined(__FreeBSD__)
|
|
54
|
+
|
|
55
|
+
#ifdef __has_include
|
|
56
|
+
#if __has_include(<endian.h>)
|
|
57
|
+
#include <endian.h>
|
|
58
|
+
#endif //__has_include(<endian.h>)
|
|
59
|
+
#endif //__has_include
|
|
60
|
+
|
|
61
|
+
#endif // defined(__APPLE__) || defined(__FreeBSD__)
|
|
62
|
+
|
|
63
|
+
#ifndef !defined(__BYTE_ORDER__) || !defined(__ORDER_LITTLE_ENDIAN__)
|
|
64
|
+
#define SIMDUTF_IS_BIG_ENDIAN 0
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
68
|
+
#define SIMDUTF_IS_BIG_ENDIAN 0
|
|
69
|
+
#else // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
70
|
+
#define SIMDUTF_IS_BIG_ENDIAN 1
|
|
71
|
+
#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
72
|
+
|
|
73
|
+
#endif // defined __BYTE_ORDER__ && defined __ORDER_BIG_ENDIAN__
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* At this point in time, SIMDUTF_IS_BIG_ENDIAN is defined.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
#ifdef _MSC_VER
|
|
80
|
+
#define SIMDUTF_VISUAL_STUDIO 1
|
|
81
|
+
/**
|
|
82
|
+
* We want to differentiate carefully between
|
|
83
|
+
* clang under visual studio and regular visual
|
|
84
|
+
* studio.
|
|
85
|
+
*
|
|
86
|
+
* Under clang for Windows, we enable:
|
|
87
|
+
* * target pragmas so that part and only part of the
|
|
88
|
+
* code gets compiled for advanced instructions.
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
#ifdef __clang__
|
|
92
|
+
// clang under visual studio
|
|
93
|
+
#define SIMDUTF_CLANG_VISUAL_STUDIO 1
|
|
94
|
+
#else
|
|
95
|
+
// just regular visual studio (best guess)
|
|
96
|
+
#define SIMDUTF_REGULAR_VISUAL_STUDIO 1
|
|
97
|
+
#endif // __clang__
|
|
98
|
+
#endif // _MSC_VER
|
|
99
|
+
|
|
100
|
+
#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
101
|
+
// https://en.wikipedia.org/wiki/C_alternative_tokens
|
|
102
|
+
// This header should have no effect, except maybe
|
|
103
|
+
// under Visual Studio.
|
|
104
|
+
#include <iso646.h>
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
#if (defined(__x86_64__) || defined(_M_AMD64)) && !defined(_M_ARM64EC)
|
|
108
|
+
#define SIMDUTF_IS_X86_64 1
|
|
109
|
+
#elif defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
|
|
110
|
+
#define SIMDUTF_IS_ARM64 1
|
|
111
|
+
#elif defined(__PPC64__) || defined(_M_PPC64)
|
|
112
|
+
#if defined(__VEC__) && defined(__ALTIVEC__)
|
|
113
|
+
#define SIMDUTF_IS_PPC64 1
|
|
114
|
+
#endif
|
|
115
|
+
#elif defined(__s390__)
|
|
116
|
+
// s390 IBM system. Big endian.
|
|
117
|
+
#elif (defined(__riscv) || defined(__riscv__)) && __riscv_xlen == 64
|
|
118
|
+
// RISC-V 64-bit
|
|
119
|
+
#define SIMDUTF_IS_RISCV64 1
|
|
120
|
+
|
|
121
|
+
// #if __riscv_v_intrinsic >= 1000000
|
|
122
|
+
// #define SIMDUTF_HAS_RVV_INTRINSICS 1
|
|
123
|
+
// #define SIMDUTF_HAS_RVV_TARGET_REGION 1
|
|
124
|
+
// #elif ...
|
|
125
|
+
// Check for special compiler versions that implement pre v1.0 intrinsics
|
|
126
|
+
#if __riscv_v_intrinsic >= 11000
|
|
127
|
+
#define SIMDUTF_HAS_RVV_INTRINSICS 1
|
|
128
|
+
#endif
|
|
129
|
+
|
|
130
|
+
#define SIMDUTF_HAS_ZVBB_INTRINSICS \
|
|
131
|
+
0 // there is currently no way to detect this
|
|
132
|
+
|
|
133
|
+
#if SIMDUTF_HAS_RVV_INTRINSICS && __riscv_vector && \
|
|
134
|
+
__riscv_v_min_vlen >= 128 && __riscv_v_elen >= 64
|
|
135
|
+
// RISC-V V extension
|
|
136
|
+
#define SIMDUTF_IS_RVV 1
|
|
137
|
+
#if SIMDUTF_HAS_ZVBB_INTRINSICS && __riscv_zvbb >= 1000000
|
|
138
|
+
// RISC-V Vector Basic Bit-manipulation
|
|
139
|
+
#define SIMDUTF_IS_ZVBB 1
|
|
140
|
+
#endif
|
|
141
|
+
#endif
|
|
142
|
+
|
|
143
|
+
#elif defined(__loongarch_lp64)
|
|
144
|
+
#if defined(__loongarch_sx) && defined(__loongarch_asx)
|
|
145
|
+
#define SIMDUTF_IS_LSX 1
|
|
146
|
+
#define SIMDUTF_IS_LASX 1 // We can always run both
|
|
147
|
+
#elif defined(__loongarch_sx)
|
|
148
|
+
#define SIMDUTF_IS_LSX 1
|
|
149
|
+
// Adjust for runtime dispatching support.
|
|
150
|
+
#if defined(__GNUC__) && !defined(__clang__) && \
|
|
151
|
+
!defined(__INTEL_COMPILER) && !defined(__NVCOMPILER)
|
|
152
|
+
#if __GNUC__ > 15 || (__GNUC__ == 15 && __GNUC_MINOR__ >= 0)
|
|
153
|
+
// We are ok, we will support runtime dispatch for LASX.
|
|
154
|
+
#else
|
|
155
|
+
// We disable runtime dispatch for LASX, which means that we will not be
|
|
156
|
+
// able to use LASX even if it is supported by the hardware. Loongson
|
|
157
|
+
// users should update to GCC 15 or better.
|
|
158
|
+
#define SIMDUTF_IMPLEMENTATION_LASX 0
|
|
159
|
+
#endif
|
|
160
|
+
#else
|
|
161
|
+
// We are not using GCC, so we assume that we can support runtime dispatch
|
|
162
|
+
// for LASX. https://godbolt.org/z/jcMnrjYhs
|
|
163
|
+
#define SIMDUTF_IMPLEMENTATION_LASX 0
|
|
164
|
+
#endif
|
|
165
|
+
#endif
|
|
166
|
+
#else
|
|
167
|
+
// The simdutf library is designed
|
|
168
|
+
// for 64-bit processors and it seems that you are not
|
|
169
|
+
// compiling for a known 64-bit platform. Please
|
|
170
|
+
// use a 64-bit target such as x64 or 64-bit ARM for best performance.
|
|
171
|
+
#define SIMDUTF_IS_32BITS 1
|
|
172
|
+
|
|
173
|
+
// We do not support 32-bit platforms, but it can be
|
|
174
|
+
// handy to identify them.
|
|
175
|
+
#if defined(_M_IX86) || defined(__i386__)
|
|
176
|
+
#define SIMDUTF_IS_X86_32BITS 1
|
|
177
|
+
#elif defined(__arm__) || defined(_M_ARM)
|
|
178
|
+
#define SIMDUTF_IS_ARM_32BITS 1
|
|
179
|
+
#elif defined(__PPC__) || defined(_M_PPC)
|
|
180
|
+
#define SIMDUTF_IS_PPC_32BITS 1
|
|
181
|
+
#endif
|
|
182
|
+
|
|
183
|
+
#endif // defined(__x86_64__) || defined(_M_AMD64)
|
|
184
|
+
|
|
185
|
+
#ifdef SIMDUTF_IS_32BITS
|
|
186
|
+
#ifndef SIMDUTF_NO_PORTABILITY_WARNING
|
|
187
|
+
// In the future, we may want to warn users of 32-bit systems that
|
|
188
|
+
// the simdutf does not support accelerated kernels for such systems.
|
|
189
|
+
#endif // SIMDUTF_NO_PORTABILITY_WARNING
|
|
190
|
+
#endif // SIMDUTF_IS_32BITS
|
|
191
|
+
|
|
192
|
+
// this is almost standard?
|
|
193
|
+
#define SIMDUTF_STRINGIFY_IMPLEMENTATION_(a) #a
|
|
194
|
+
#define SIMDUTF_STRINGIFY(a) SIMDUTF_STRINGIFY_IMPLEMENTATION_(a)
|
|
195
|
+
|
|
196
|
+
// Our fast kernels require 64-bit systems.
|
|
197
|
+
//
|
|
198
|
+
// On 32-bit x86, we lack 64-bit popcnt, lzcnt, blsr instructions.
|
|
199
|
+
// Furthermore, the number of SIMD registers is reduced.
|
|
200
|
+
//
|
|
201
|
+
// On 32-bit ARM, we would have smaller registers.
|
|
202
|
+
//
|
|
203
|
+
// The simdutf users should still have the fallback kernel. It is
|
|
204
|
+
// slower, but it should run everywhere.
|
|
205
|
+
|
|
206
|
+
//
|
|
207
|
+
// Enable valid runtime implementations, and select
|
|
208
|
+
// SIMDUTF_BUILTIN_IMPLEMENTATION
|
|
209
|
+
//
|
|
210
|
+
|
|
211
|
+
// We are going to use runtime dispatch.
|
|
212
|
+
#if defined(SIMDUTF_IS_X86_64) || defined(SIMDUTF_IS_LSX)
|
|
213
|
+
#ifdef __clang__
|
|
214
|
+
// clang does not have GCC push pop
|
|
215
|
+
// warning: clang attribute push can't be used within a namespace in clang
|
|
216
|
+
// up til 8.0 so SIMDUTF_TARGET_REGION and SIMDUTF_UNTARGET_REGION must be
|
|
217
|
+
// *outside* of a namespace.
|
|
218
|
+
#define SIMDUTF_TARGET_REGION(T) \
|
|
219
|
+
_Pragma(SIMDUTF_STRINGIFY(clang attribute push( \
|
|
220
|
+
__attribute__((target(T))), apply_to = function)))
|
|
221
|
+
#define SIMDUTF_UNTARGET_REGION _Pragma("clang attribute pop")
|
|
222
|
+
#elif defined(__GNUC__)
|
|
223
|
+
// GCC is easier
|
|
224
|
+
#define SIMDUTF_TARGET_REGION(T) \
|
|
225
|
+
_Pragma("GCC push_options") _Pragma(SIMDUTF_STRINGIFY(GCC target(T)))
|
|
226
|
+
#define SIMDUTF_UNTARGET_REGION _Pragma("GCC pop_options")
|
|
227
|
+
#endif // clang then gcc
|
|
228
|
+
|
|
229
|
+
#endif // defined(SIMDUTF_IS_X86_64) || defined(SIMDUTF_IS_LSX)
|
|
230
|
+
|
|
231
|
+
// Default target region macros don't do anything.
|
|
232
|
+
#ifndef SIMDUTF_TARGET_REGION
|
|
233
|
+
#define SIMDUTF_TARGET_REGION(T)
|
|
234
|
+
#define SIMDUTF_UNTARGET_REGION
|
|
235
|
+
#endif
|
|
236
|
+
|
|
237
|
+
// Is threading enabled?
|
|
238
|
+
#if defined(_REENTRANT) || defined(_MT)
|
|
239
|
+
#ifndef SIMDUTF_THREADS_ENABLED
|
|
240
|
+
#define SIMDUTF_THREADS_ENABLED
|
|
241
|
+
#endif
|
|
242
|
+
#endif
|
|
243
|
+
|
|
244
|
+
// workaround for large stack sizes under -O0.
|
|
245
|
+
// https://github.com/simdutf/simdutf/issues/691
|
|
246
|
+
#ifdef __APPLE__
|
|
247
|
+
#ifndef __OPTIMIZE__
|
|
248
|
+
// Apple systems have small stack sizes in secondary threads.
|
|
249
|
+
// Lack of compiler optimization may generate high stack usage.
|
|
250
|
+
// Users may want to disable threads for safety, but only when
|
|
251
|
+
// in debug mode which we detect by the fact that the __OPTIMIZE__
|
|
252
|
+
// macro is not defined.
|
|
253
|
+
#undef SIMDUTF_THREADS_ENABLED
|
|
254
|
+
#endif
|
|
255
|
+
#endif
|
|
256
|
+
|
|
257
|
+
#ifdef SIMDUTF_VISUAL_STUDIO
|
|
258
|
+
// This is one case where we do not distinguish between
|
|
259
|
+
// regular visual studio and clang under visual studio.
|
|
260
|
+
// clang under Windows has _stricmp (like visual studio) but not strcasecmp
|
|
261
|
+
// (as clang normally has)
|
|
262
|
+
#define simdutf_strcasecmp _stricmp
|
|
263
|
+
#define simdutf_strncasecmp _strnicmp
|
|
264
|
+
#else
|
|
265
|
+
// The strcasecmp, strncasecmp, and strcasestr functions do not work with
|
|
266
|
+
// multibyte strings (e.g. UTF-8). So they are only useful for ASCII in our
|
|
267
|
+
// context.
|
|
268
|
+
// https://www.gnu.org/software/libunistring/manual/libunistring.html#char-_002a-strings
|
|
269
|
+
#define simdutf_strcasecmp strcasecmp
|
|
270
|
+
#define simdutf_strncasecmp strncasecmp
|
|
271
|
+
#endif
|
|
272
|
+
|
|
273
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
|
274
|
+
#if __GNUC__ >= 11
|
|
275
|
+
#define SIMDUTF_GCC11ORMORE 1
|
|
276
|
+
#endif // __GNUC__ >= 11
|
|
277
|
+
#if __GNUC__ == 10
|
|
278
|
+
#define SIMDUTF_GCC10 1
|
|
279
|
+
#endif // __GNUC__ == 10
|
|
280
|
+
#if __GNUC__ < 10
|
|
281
|
+
#define SIMDUTF_GCC9OROLDER 1
|
|
282
|
+
#endif // __GNUC__ == 10
|
|
283
|
+
#endif // defined(__GNUC__) && !defined(__clang__)
|
|
284
|
+
|
|
285
|
+
#endif // SIMDUTF_PORTABILITY_H
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#ifndef SIMDUTF_ASCII_H
|
|
2
|
+
#define SIMDUTF_ASCII_H
|
|
3
|
+
|
|
4
|
+
namespace simdutf {
|
|
5
|
+
namespace scalar {
|
|
6
|
+
namespace {
|
|
7
|
+
namespace ascii {
|
|
8
|
+
|
|
9
|
+
template <class InputPtr>
|
|
10
|
+
#if SIMDUTF_CPLUSPLUS20
|
|
11
|
+
requires simdutf::detail::indexes_into_byte_like<InputPtr>
|
|
12
|
+
#endif
|
|
13
|
+
simdutf_warn_unused simdutf_constexpr23 bool validate(InputPtr data,
|
|
14
|
+
size_t len) noexcept {
|
|
15
|
+
uint64_t pos = 0;
|
|
16
|
+
|
|
17
|
+
#if SIMDUTF_CPLUSPLUS23
|
|
18
|
+
// avoid memcpy during constant evaluation
|
|
19
|
+
if !consteval
|
|
20
|
+
#endif
|
|
21
|
+
// process in blocks of 16 bytes when possible
|
|
22
|
+
{
|
|
23
|
+
for (; pos + 16 <= len; pos += 16) {
|
|
24
|
+
uint64_t v1;
|
|
25
|
+
std::memcpy(&v1, data + pos, sizeof(uint64_t));
|
|
26
|
+
uint64_t v2;
|
|
27
|
+
std::memcpy(&v2, data + pos + sizeof(uint64_t), sizeof(uint64_t));
|
|
28
|
+
uint64_t v{v1 | v2};
|
|
29
|
+
if ((v & 0x8080808080808080) != 0) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// process the tail byte-by-byte
|
|
36
|
+
for (; pos < len; pos++) {
|
|
37
|
+
if (static_cast<std::uint8_t>(data[pos]) >= 0b10000000) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
template <class InputPtr>
|
|
44
|
+
#if SIMDUTF_CPLUSPLUS20
|
|
45
|
+
requires simdutf::detail::indexes_into_byte_like<InputPtr>
|
|
46
|
+
#endif
|
|
47
|
+
simdutf_warn_unused simdutf_constexpr23 result
|
|
48
|
+
validate_with_errors(InputPtr data, size_t len) noexcept {
|
|
49
|
+
size_t pos = 0;
|
|
50
|
+
#if SIMDUTF_CPLUSPLUS23
|
|
51
|
+
// avoid memcpy during constant evaluation
|
|
52
|
+
if !consteval
|
|
53
|
+
#endif
|
|
54
|
+
{
|
|
55
|
+
// process in blocks of 16 bytes when possible
|
|
56
|
+
for (; pos + 16 <= len; pos += 16) {
|
|
57
|
+
uint64_t v1;
|
|
58
|
+
std::memcpy(&v1, data + pos, sizeof(uint64_t));
|
|
59
|
+
uint64_t v2;
|
|
60
|
+
std::memcpy(&v2, data + pos + sizeof(uint64_t), sizeof(uint64_t));
|
|
61
|
+
uint64_t v{v1 | v2};
|
|
62
|
+
if ((v & 0x8080808080808080) != 0) {
|
|
63
|
+
for (; pos < len; pos++) {
|
|
64
|
+
if (static_cast<std::uint8_t>(data[pos]) >= 0b10000000) {
|
|
65
|
+
return result(error_code::TOO_LARGE, pos);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// process the tail byte-by-byte
|
|
73
|
+
for (; pos < len; pos++) {
|
|
74
|
+
if (static_cast<std::uint8_t>(data[pos]) >= 0b10000000) {
|
|
75
|
+
return result(error_code::TOO_LARGE, pos);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return result(error_code::SUCCESS, pos);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
} // namespace ascii
|
|
82
|
+
} // unnamed namespace
|
|
83
|
+
} // namespace scalar
|
|
84
|
+
} // namespace simdutf
|
|
85
|
+
|
|
86
|
+
#endif
|