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,317 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include "benchmark_base.h"
|
|
3
|
+
#include "cmdline.h"
|
|
4
|
+
#include "simdutf.h"
|
|
5
|
+
#include <variant>
|
|
6
|
+
#include <cstddef>
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* ICU is a standard library that is often already present on the system.
|
|
10
|
+
*/
|
|
11
|
+
#if defined __has_include
|
|
12
|
+
#if !defined(ICU_AVAILABLE) && __has_include(<unicode/unistr.h>)
|
|
13
|
+
#define ICU_AVAILABLE 1
|
|
14
|
+
// U_ICU_VERSION is relevant here.
|
|
15
|
+
#endif //__has_include (<unicode/unistr.h>)
|
|
16
|
+
|
|
17
|
+
#if !defined(ICONV_AVAILABLE) && __has_include(<iconv.h>)
|
|
18
|
+
#define ICONV_AVAILABLE 1
|
|
19
|
+
#endif //__has_include (<iconv.h>)
|
|
20
|
+
|
|
21
|
+
#endif // defined __has_include
|
|
22
|
+
|
|
23
|
+
#if ICU_AVAILABLE
|
|
24
|
+
#include <unicode/uconfig.h>
|
|
25
|
+
#include <unicode/platform.h>
|
|
26
|
+
#include <unicode/unistr.h>
|
|
27
|
+
#include <unicode/ucnv.h>
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
#if ICONV_AVAILABLE
|
|
31
|
+
#include <iconv.h>
|
|
32
|
+
#endif
|
|
33
|
+
/**
|
|
34
|
+
* inoue2008 is:
|
|
35
|
+
* Hiroshi Inoue and Hideaki Komatsu and Toshio Nakatani,
|
|
36
|
+
* Accelerating UTF-8 Decoding Using SIMD Instructions (in Japanese),
|
|
37
|
+
* Information Processing Society of Japan Transactions on Programming 1 (2),
|
|
38
|
+
* 2008.
|
|
39
|
+
*/
|
|
40
|
+
#include "benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h"
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Nemanja Trifunovic, UTF8-CPP: UTF-8 with C++ in a Portable Way
|
|
44
|
+
* https://github.com/nemtrif/utfcpp/releases/tag/v3.2.2
|
|
45
|
+
*/
|
|
46
|
+
#include "benchmarks/competition/utfcpp/source/utf8.h"
|
|
47
|
+
|
|
48
|
+
namespace simdutf::benchmarks {
|
|
49
|
+
|
|
50
|
+
class Benchmark : public BenchmarkBase {
|
|
51
|
+
public:
|
|
52
|
+
using BenchmarkBase::run;
|
|
53
|
+
|
|
54
|
+
Benchmark(std::vector<input::Testcase> &&testcases);
|
|
55
|
+
|
|
56
|
+
static Benchmark create(const CommandLine &cmdline);
|
|
57
|
+
virtual const std::set<std::string> all_procedures() const override;
|
|
58
|
+
virtual std::set<simdutf::encoding_type>
|
|
59
|
+
expected_encodings(const std::string &procedure) override;
|
|
60
|
+
|
|
61
|
+
void list_procedures(ListingMode) const;
|
|
62
|
+
|
|
63
|
+
protected:
|
|
64
|
+
virtual void run(const std::string &procedure_name,
|
|
65
|
+
size_t iterations) override;
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
using simdutf_fn = void (Benchmark::*)(const simdutf::implementation &,
|
|
69
|
+
size_t);
|
|
70
|
+
using thirdparty_fn = void (Benchmark::*)(size_t);
|
|
71
|
+
|
|
72
|
+
std::map<std::string, std::pair<std::variant<simdutf_fn, thirdparty_fn>,
|
|
73
|
+
std::set<simdutf::encoding_type>>>
|
|
74
|
+
benchmarks;
|
|
75
|
+
|
|
76
|
+
template <typename Fn>
|
|
77
|
+
void register_function(std::string name, Fn function,
|
|
78
|
+
std::set<simdutf::encoding_type> set);
|
|
79
|
+
|
|
80
|
+
template <typename Fn>
|
|
81
|
+
void register_function(std::string name, Fn function,
|
|
82
|
+
simdutf::encoding_type enc1);
|
|
83
|
+
template <typename Fn>
|
|
84
|
+
void register_function(std::string name, Fn function,
|
|
85
|
+
simdutf::encoding_type enc1,
|
|
86
|
+
simdutf::encoding_type enc2);
|
|
87
|
+
template <typename Fn>
|
|
88
|
+
void
|
|
89
|
+
register_function(std::string name, Fn function, simdutf::encoding_type enc1,
|
|
90
|
+
simdutf::encoding_type enc2, simdutf::encoding_type enc3);
|
|
91
|
+
|
|
92
|
+
private:
|
|
93
|
+
void run_naive_validate_ascii(const simdutf::implementation &implementation,
|
|
94
|
+
size_t iterations);
|
|
95
|
+
void run_validate_ascii(const simdutf::implementation &implementation,
|
|
96
|
+
size_t iterations);
|
|
97
|
+
void
|
|
98
|
+
run_validate_ascii_with_errors(const simdutf::implementation &implementation,
|
|
99
|
+
size_t iterations);
|
|
100
|
+
void run_validate_utf8(const simdutf::implementation &implementation,
|
|
101
|
+
size_t iterations);
|
|
102
|
+
void
|
|
103
|
+
run_validate_utf8_with_errors(const simdutf::implementation &implementation,
|
|
104
|
+
size_t iterations);
|
|
105
|
+
void run_validate_utf16le(const simdutf::implementation &implementation,
|
|
106
|
+
size_t iterations);
|
|
107
|
+
void run_validate_utf16le_with_errors(
|
|
108
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
109
|
+
void run_validate_utf32(const simdutf::implementation &implementation,
|
|
110
|
+
size_t iterations);
|
|
111
|
+
void run_to_well_formed_utf16le(const simdutf::implementation &implementation,
|
|
112
|
+
size_t iterations);
|
|
113
|
+
void
|
|
114
|
+
run_validate_utf32_with_errors(const simdutf::implementation &implementation,
|
|
115
|
+
size_t iterations);
|
|
116
|
+
void run_count_utf8(const simdutf::implementation &implementation,
|
|
117
|
+
size_t iterations);
|
|
118
|
+
void run_count_utf16le(const simdutf::implementation &implementation,
|
|
119
|
+
size_t iterations);
|
|
120
|
+
void
|
|
121
|
+
run_utf8_length_from_latin1(const simdutf::implementation &implementation,
|
|
122
|
+
size_t iterations);
|
|
123
|
+
void
|
|
124
|
+
run_utf8_length_from_utf16le(const simdutf::implementation &implementation,
|
|
125
|
+
size_t iterations);
|
|
126
|
+
void
|
|
127
|
+
run_utf8_length_from_utf16be(const simdutf::implementation &implementation,
|
|
128
|
+
size_t iterations);
|
|
129
|
+
void run_utf8_length_from_utf16le_with_replacement(
|
|
130
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
131
|
+
void run_utf8_length_from_utf16be_with_replacement(
|
|
132
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
133
|
+
void run_utf8_length_from_utf32(const simdutf::implementation &implementation,
|
|
134
|
+
size_t iterations);
|
|
135
|
+
void run_utf16_length_from_utf8(const simdutf::implementation &implementation,
|
|
136
|
+
size_t iterations);
|
|
137
|
+
void run_convert_latin1_to_utf8(const simdutf::implementation &implementation,
|
|
138
|
+
size_t iterations);
|
|
139
|
+
void
|
|
140
|
+
run_convert_latin1_to_utf16le(const simdutf::implementation &implementation,
|
|
141
|
+
size_t iterations);
|
|
142
|
+
void
|
|
143
|
+
run_convert_latin1_to_utf32(const simdutf::implementation &implementation,
|
|
144
|
+
size_t iterations);
|
|
145
|
+
void run_convert_utf8_to_latin1(const simdutf::implementation &implementation,
|
|
146
|
+
size_t iterations);
|
|
147
|
+
void run_convert_utf8_to_latin1_with_errors(
|
|
148
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
149
|
+
void
|
|
150
|
+
run_convert_utf8_to_utf16le(const simdutf::implementation &implementation,
|
|
151
|
+
size_t iterations);
|
|
152
|
+
void run_convert_utf8_to_utf16le_with_errors(
|
|
153
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
154
|
+
void run_convert_utf8_to_utf32(const simdutf::implementation &implementation,
|
|
155
|
+
size_t iterations);
|
|
156
|
+
void run_convert_utf8_to_utf32_with_errors(
|
|
157
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
158
|
+
void run_convert_utf8_to_utf16le_with_dynamic_allocation(
|
|
159
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
160
|
+
void run_convert_utf8_to_utf32_with_dynamic_allocation(
|
|
161
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
162
|
+
void run_convert_valid_utf8_to_latin1(
|
|
163
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
164
|
+
void run_convert_valid_utf8_to_utf16le(
|
|
165
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
166
|
+
void
|
|
167
|
+
run_convert_valid_utf8_to_utf32(const simdutf::implementation &implementation,
|
|
168
|
+
size_t iterations);
|
|
169
|
+
void
|
|
170
|
+
run_convert_utf16le_to_latin1(const simdutf::implementation &implementation,
|
|
171
|
+
size_t iterations);
|
|
172
|
+
void run_convert_utf16le_to_latin1_with_errors(
|
|
173
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
174
|
+
void
|
|
175
|
+
run_convert_utf16le_to_utf8(const simdutf::implementation &implementation,
|
|
176
|
+
size_t iterations);
|
|
177
|
+
void
|
|
178
|
+
run_convert_utf16_to_utf8_safe(const simdutf::implementation &implementation,
|
|
179
|
+
size_t iterations);
|
|
180
|
+
void run_convert_utf16le_to_utf8_with_errors(
|
|
181
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
182
|
+
void
|
|
183
|
+
run_convert_utf16le_to_utf32(const simdutf::implementation &implementation,
|
|
184
|
+
size_t iterations);
|
|
185
|
+
void run_convert_utf16le_to_utf32_with_errors(
|
|
186
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
187
|
+
void run_convert_utf16le_to_utf8_with_dynamic_allocation(
|
|
188
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
189
|
+
void run_convert_utf16le_to_utf32_with_dynamic_allocation(
|
|
190
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
191
|
+
void run_convert_valid_utf16le_to_latin1(
|
|
192
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
193
|
+
void run_convert_valid_utf16le_to_utf8(
|
|
194
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
195
|
+
void
|
|
196
|
+
run_convert_utf32_to_latin1(const simdutf::implementation &implementation,
|
|
197
|
+
size_t iterations);
|
|
198
|
+
void run_convert_utf32_to_latin1_with_errors(
|
|
199
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
200
|
+
void run_convert_utf32_to_utf8(const simdutf::implementation &implementation,
|
|
201
|
+
size_t iterations);
|
|
202
|
+
void run_convert_utf32_to_utf8_with_errors(
|
|
203
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
204
|
+
void run_convert_valid_utf32_to_latin1(
|
|
205
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
206
|
+
void
|
|
207
|
+
run_convert_valid_utf32_to_utf8(const simdutf::implementation &implementation,
|
|
208
|
+
size_t iterations);
|
|
209
|
+
|
|
210
|
+
template <endianness byte_order>
|
|
211
|
+
void run_convert_utf32_to_utf16(const simdutf::implementation &implementation,
|
|
212
|
+
size_t iterations);
|
|
213
|
+
template <endianness byte_order>
|
|
214
|
+
void run_convert_utf32_to_utf16_with_errors(
|
|
215
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
216
|
+
|
|
217
|
+
template <endianness byte_order>
|
|
218
|
+
void run_convert_valid_utf32_to_utf16(
|
|
219
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
220
|
+
|
|
221
|
+
void run_convert_valid_utf16le_to_utf32(
|
|
222
|
+
const simdutf::implementation &implementation, size_t iterations);
|
|
223
|
+
void run_detect_encodings(const simdutf::implementation &implementation,
|
|
224
|
+
size_t iterations);
|
|
225
|
+
void run_utf8_length_from_latin1_node(size_t iterations);
|
|
226
|
+
#if ICU_AVAILABLE
|
|
227
|
+
void run_convert_latin1_to_utf8_icu(size_t iterations);
|
|
228
|
+
void run_convert_latin1_to_utf16_icu(size_t iterations);
|
|
229
|
+
void run_convert_latin1_to_utf32_icu(size_t iterations);
|
|
230
|
+
void run_convert_utf8_to_latin1_icu(size_t iterations);
|
|
231
|
+
void run_convert_utf8_to_utf16_icu(size_t iterations);
|
|
232
|
+
void run_convert_utf16_to_utf8_icu(size_t iterations);
|
|
233
|
+
void run_convert_utf16_to_latin1_icu(size_t iterations);
|
|
234
|
+
void run_convert_utf32_to_latin1_icu(size_t iterations);
|
|
235
|
+
#endif
|
|
236
|
+
#if ICONV_AVAILABLE
|
|
237
|
+
void run_convert_latin1_to_utf8_iconv(size_t iterations);
|
|
238
|
+
void run_convert_latin1_to_utf16_iconv(size_t iterations);
|
|
239
|
+
void run_convert_latin1_to_utf32_iconv(size_t iterations);
|
|
240
|
+
void run_convert_utf8_to_latin1_iconv(size_t iterations);
|
|
241
|
+
void run_convert_utf8_to_utf16_iconv(size_t iterations);
|
|
242
|
+
void run_convert_utf16_to_utf8_iconv(size_t iterations);
|
|
243
|
+
void run_convert_utf16_to_latin1_iconv(size_t iterations);
|
|
244
|
+
void run_convert_utf32_to_latin1_iconv(size_t iterations);
|
|
245
|
+
#endif
|
|
246
|
+
#ifdef INOUE2008
|
|
247
|
+
/**
|
|
248
|
+
* Hiroshi Inoue and Hideaki Komatsu and Toshio Nakatani,
|
|
249
|
+
* Accelerating UTF-8 Decoding Using SIMD Instructions (in Japanese),
|
|
250
|
+
* Information Processing Society of Japan Transactions on Programming 1 (2),
|
|
251
|
+
* 2008.
|
|
252
|
+
*/
|
|
253
|
+
void run_convert_valid_utf8_to_utf16_inoue2008(size_t iterations);
|
|
254
|
+
#endif
|
|
255
|
+
#ifdef __x86_64__
|
|
256
|
+
/**
|
|
257
|
+
* utf8lut: Vectorized UTF-8 converter.
|
|
258
|
+
* by stgatilov (2019)
|
|
259
|
+
* https://dirtyhandscoding.github.io/posts/utf8lut-vectorized-utf-8-converter-introduction.html
|
|
260
|
+
*/
|
|
261
|
+
void run_convert_utf16_to_utf8_utf8lut(size_t iterations);
|
|
262
|
+
void run_convert_valid_utf16_to_utf8_utf8lut(size_t iterations);
|
|
263
|
+
|
|
264
|
+
void run_convert_utf8_to_utf16_utf8lut(size_t iterations);
|
|
265
|
+
void run_convert_utf8_to_utf32_utf8lut(size_t iterations);
|
|
266
|
+
void run_convert_valid_utf8_to_utf16_utf8lut(size_t iterations);
|
|
267
|
+
void run_convert_valid_utf8_to_utf32_utf8lut(size_t iterations);
|
|
268
|
+
|
|
269
|
+
void run_convert_utf32_to_utf8_utf8lut(size_t iterations);
|
|
270
|
+
void run_convert_valid_utf32_to_utf8_utf8lut(size_t iterations);
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Bob Steagall, CppCon2018
|
|
274
|
+
* https://github.com/BobSteagall/CppCon2018/
|
|
275
|
+
*
|
|
276
|
+
* Fast Conversion From UTF-8 with C++, DFAs, and SSE Intrinsics
|
|
277
|
+
* https://www.youtube.com/watch?v=5FQ87-Ecb-A
|
|
278
|
+
*/
|
|
279
|
+
void run_convert_utf8_to_utf16_cppcon2018(size_t iterations);
|
|
280
|
+
void run_convert_utf8_to_utf32_cppcon2018(size_t iterations);
|
|
281
|
+
/**
|
|
282
|
+
* benchmarks/competition/u8u16 contains an open source version of u8u16,
|
|
283
|
+
* referenced in Cameron, Robert D, A case study in SIMD text processing with
|
|
284
|
+
* parallel bit streams: UTF-8 to UTF-16 transcoding, Proceedings of the 13th
|
|
285
|
+
* ACM SIGPLAN Symposium on Principles and practice of parallel programming,
|
|
286
|
+
* 91--98.
|
|
287
|
+
*/
|
|
288
|
+
void run_convert_utf8_to_utf16_u8u16(size_t iterations);
|
|
289
|
+
/**
|
|
290
|
+
* Olivier Goffart, UTF-8 processing using SIMD (SSE4), 2012.
|
|
291
|
+
* https://woboq.com/blog/utf-8-processing-using-simd.html
|
|
292
|
+
*/
|
|
293
|
+
void run_convert_utf8_to_utf16_utf8sse4(size_t iterations);
|
|
294
|
+
#endif
|
|
295
|
+
void run_convert_utf8_to_utf16_hoehrmann(size_t iterations);
|
|
296
|
+
void run_convert_utf8_to_utf32_hoehrmann(size_t iterations);
|
|
297
|
+
/**
|
|
298
|
+
* LLVM relies on code from the Unicode Consortium
|
|
299
|
+
* https://en.wikipedia.org/wiki/Unicode_Consortium
|
|
300
|
+
*/
|
|
301
|
+
void run_convert_utf8_to_utf16_llvm(size_t iterations);
|
|
302
|
+
void run_convert_utf8_to_utf32_llvm(size_t iterations);
|
|
303
|
+
void run_convert_utf16_to_utf8_llvm(size_t iterations);
|
|
304
|
+
void run_convert_utf32_to_utf8_llvm(size_t iterations);
|
|
305
|
+
void run_convert_utf32_to_utf16_llvm(size_t iterations);
|
|
306
|
+
void run_convert_utf16_to_utf32_llvm(size_t iterations);
|
|
307
|
+
/**
|
|
308
|
+
* Nemanja Trifunovic, UTF8-CPP: UTF-8 with C++ in a Portable Way
|
|
309
|
+
* https://github.com/nemtrif/utfcpp/releases/tag/v3.2.2
|
|
310
|
+
*/
|
|
311
|
+
void run_convert_utf8_to_utf16_utfcpp(size_t iterations);
|
|
312
|
+
void run_convert_utf16_to_utf8_utfcpp(size_t iterations);
|
|
313
|
+
void run_convert_utf8_to_utf32_utfcpp(size_t iterations);
|
|
314
|
+
void run_convert_utf32_to_utf8_utfcpp(size_t iterations);
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
} // namespace simdutf::benchmarks
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#include "benchmark_base.h"
|
|
2
|
+
#include "tests/helpers/random_utf8.h"
|
|
3
|
+
#include "simdutf.h"
|
|
4
|
+
#include <fstream>
|
|
5
|
+
#include <iostream>
|
|
6
|
+
|
|
7
|
+
namespace simdutf::benchmarks {
|
|
8
|
+
|
|
9
|
+
BenchmarkBase::BenchmarkBase(std::vector<input::Testcase> &&testcases)
|
|
10
|
+
: testcases{std::move(testcases)} {}
|
|
11
|
+
|
|
12
|
+
bool BenchmarkBase::run() {
|
|
13
|
+
printf("testcases: %zu\n", size_t(testcases.size()));
|
|
14
|
+
for (const auto &testcase : testcases) {
|
|
15
|
+
run(testcase);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void BenchmarkBase::run(const input::Testcase &testcase) {
|
|
22
|
+
prepare_input(testcase);
|
|
23
|
+
auto detected_encoding =
|
|
24
|
+
simdutf::autodetect_encoding(input_data.data(), input_data.size());
|
|
25
|
+
printf("input detected as %s\n",
|
|
26
|
+
simdutf::to_string(detected_encoding).c_str());
|
|
27
|
+
printf("===========================\n");
|
|
28
|
+
|
|
29
|
+
const auto &known_procedures = all_procedures();
|
|
30
|
+
|
|
31
|
+
if (testcase.tested_procedures.empty()) {
|
|
32
|
+
for (const std::string &procedure : known_procedures) {
|
|
33
|
+
// We will first identify the input.
|
|
34
|
+
auto expected_input_encoding = expected_encodings(procedure);
|
|
35
|
+
const bool is_in = expected_input_encoding.find(detected_encoding) !=
|
|
36
|
+
expected_input_encoding.end();
|
|
37
|
+
if (is_in) {
|
|
38
|
+
run(procedure, testcase);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
std::set<std::string> to_be_tested;
|
|
43
|
+
for (const auto &procedure : testcase.tested_procedures) {
|
|
44
|
+
for (const auto &candidate : known_procedures) {
|
|
45
|
+
if (candidate.find(procedure) != std::string::npos) {
|
|
46
|
+
to_be_tested.insert(candidate);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
for (const auto &procedure : to_be_tested) {
|
|
52
|
+
run(procedure, testcase);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void BenchmarkBase::run(const std::string &procedure_name,
|
|
58
|
+
const input::Testcase &testcase) {
|
|
59
|
+
printf("%s, input size: %zu, iterations: %zu", procedure_name.c_str(),
|
|
60
|
+
size_t(input_data.size()), size_t(testcase.iterations));
|
|
61
|
+
|
|
62
|
+
if (std::holds_alternative<input::File>(testcase.input)) {
|
|
63
|
+
const input::File &file{std::get<input::File>(testcase.input)};
|
|
64
|
+
// You'd think that the following would work, but no, not always:
|
|
65
|
+
// printf(", dataset: %s\n", reinterpret_cast<const
|
|
66
|
+
// char*>(file.path.c_str()));
|
|
67
|
+
std::string path_string{file.path.string()};
|
|
68
|
+
printf(", dataset: %s\n",
|
|
69
|
+
reinterpret_cast<const char *>(path_string.c_str()));
|
|
70
|
+
|
|
71
|
+
} else
|
|
72
|
+
putchar('\n');
|
|
73
|
+
|
|
74
|
+
run(procedure_name, testcase.iterations);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void BenchmarkBase::prepare_input(const input::Testcase &testcase) {
|
|
78
|
+
if (std::holds_alternative<input::File>(testcase.input)) {
|
|
79
|
+
const input::File &file{std::get<input::File>(testcase.input)};
|
|
80
|
+
load_file(file.path);
|
|
81
|
+
} else {
|
|
82
|
+
uint32_t seed{1234};
|
|
83
|
+
const input::random_utf8 &random{
|
|
84
|
+
std::get<input::random_utf8>(testcase.input)};
|
|
85
|
+
|
|
86
|
+
simdutf::tests::helpers::random_utf8 gen_1_2_3_4(
|
|
87
|
+
seed, random.utf_1byte_prob, random.utf_2bytes_prob,
|
|
88
|
+
random.utf_3bytes_prob, random.utf_4bytes_prob);
|
|
89
|
+
|
|
90
|
+
input_data = gen_1_2_3_4.generate(random.size);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
void BenchmarkBase::load_file(const std::filesystem::path &path) {
|
|
95
|
+
std::ifstream file;
|
|
96
|
+
file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
97
|
+
file.open(path);
|
|
98
|
+
|
|
99
|
+
input_data.assign(std::istreambuf_iterator<char>(file),
|
|
100
|
+
std::istreambuf_iterator<char>());
|
|
101
|
+
}
|
|
102
|
+
void BenchmarkBase::print_summary(const event_aggregate &all, size_t data_size,
|
|
103
|
+
size_t character_count) const {
|
|
104
|
+
print_summary(all, double(data_size), double(character_count));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
void BenchmarkBase::print_summary(const event_aggregate &all, double data_size,
|
|
108
|
+
double character_count) const {
|
|
109
|
+
const double best_time = all.best.elapsed_ns();
|
|
110
|
+
const double avg_time = all.total.elapsed_ns() / all.iterations;
|
|
111
|
+
const double gbs = data_size / best_time;
|
|
112
|
+
const double gcs = character_count / best_time;
|
|
113
|
+
const double byte_per_char = data_size / character_count;
|
|
114
|
+
const double error_margin = (avg_time / best_time - 1) * 100;
|
|
115
|
+
|
|
116
|
+
if (all.has_events) {
|
|
117
|
+
const double _1GHz = 1000000000.0;
|
|
118
|
+
const double freq = (all.best.cycles() / all.best.elapsed_sec()) / _1GHz;
|
|
119
|
+
const double insperbyte = all.best.instructions() / data_size;
|
|
120
|
+
const double cycleperbyte = all.best.cycles() / data_size;
|
|
121
|
+
|
|
122
|
+
const double inspercycle = all.best.instructions() / all.best.cycles();
|
|
123
|
+
|
|
124
|
+
printf("%8.3f ins/byte, %8.3f cycle/byte, %8.3f GB/s (%.1f %%), %8.3f "
|
|
125
|
+
"GHz, %8.3f ins/cycle \n",
|
|
126
|
+
insperbyte, cycleperbyte, gbs, error_margin, freq, inspercycle);
|
|
127
|
+
const double insperchar = all.best.instructions() / character_count;
|
|
128
|
+
const double cycleperchar = all.best.cycles() / character_count;
|
|
129
|
+
|
|
130
|
+
printf("%8.3f ins/char, %8.3f cycle/char, %8.3f Gc/s (%.1f %%) %8.2f "
|
|
131
|
+
"byte/char %8.1f ns\n",
|
|
132
|
+
insperchar, cycleperchar, gcs, error_margin, byte_per_char,
|
|
133
|
+
best_time);
|
|
134
|
+
|
|
135
|
+
} else {
|
|
136
|
+
printf("%8.3f GB/s (%.1f %%) %8.3f Gc/s %8.2f byte/char %8.1f ns\n", gbs,
|
|
137
|
+
error_margin, gcs, byte_per_char, best_time);
|
|
138
|
+
}
|
|
139
|
+
if (error_margin > 10) {
|
|
140
|
+
printf("WARNING: Measurements are noisy, try increasing iteration count "
|
|
141
|
+
"(-I).\n");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
} // namespace simdutf::benchmarks
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <set>
|
|
4
|
+
#include <vector>
|
|
5
|
+
#include <map>
|
|
6
|
+
#include <filesystem>
|
|
7
|
+
#include <variant>
|
|
8
|
+
#include <random>
|
|
9
|
+
#include "event_counter.h"
|
|
10
|
+
#include "simdutf.h"
|
|
11
|
+
namespace simdutf::benchmarks {
|
|
12
|
+
|
|
13
|
+
namespace input {
|
|
14
|
+
struct File {
|
|
15
|
+
std::filesystem::path path;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
struct random_utf8 {
|
|
19
|
+
size_t size;
|
|
20
|
+
int utf_1byte_prob = 1;
|
|
21
|
+
int utf_2bytes_prob = 1;
|
|
22
|
+
int utf_3bytes_prob = 1;
|
|
23
|
+
int utf_4bytes_prob = 1;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
struct Testcase {
|
|
27
|
+
std::set<std::string> tested_procedures;
|
|
28
|
+
size_t iterations;
|
|
29
|
+
std::variant<File, random_utf8> input;
|
|
30
|
+
};
|
|
31
|
+
} // namespace input
|
|
32
|
+
|
|
33
|
+
class BenchmarkBase {
|
|
34
|
+
protected:
|
|
35
|
+
std::vector<uint8_t> input_data;
|
|
36
|
+
std::vector<uint8_t> output_data;
|
|
37
|
+
|
|
38
|
+
std::vector<input::Testcase> testcases;
|
|
39
|
+
|
|
40
|
+
uint32_t seed{1234};
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
BenchmarkBase(std::vector<input::Testcase> &&testcases);
|
|
44
|
+
bool run();
|
|
45
|
+
virtual const std::set<std::string> all_procedures() const = 0;
|
|
46
|
+
virtual std::set<simdutf::encoding_type>
|
|
47
|
+
expected_encodings(const std::string &procedure) = 0;
|
|
48
|
+
|
|
49
|
+
protected:
|
|
50
|
+
virtual void run(const std::string &procedure_name, size_t iterations) = 0;
|
|
51
|
+
|
|
52
|
+
template <typename PROCEDURE>
|
|
53
|
+
event_aggregate count_events(PROCEDURE, size_t iterations);
|
|
54
|
+
void print_summary(const event_aggregate &all, double data_size,
|
|
55
|
+
double character_count) const;
|
|
56
|
+
void print_summary(const event_aggregate &all, size_t data_size,
|
|
57
|
+
size_t character_count) const;
|
|
58
|
+
|
|
59
|
+
void run(const input::Testcase &testcase);
|
|
60
|
+
void run(const std::string &procedure_name, const input::Testcase &testcase);
|
|
61
|
+
void prepare_input(const input::Testcase &benchmark);
|
|
62
|
+
void load_file(const std::filesystem::path &path);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
template <typename PROCEDURE>
|
|
66
|
+
event_aggregate BenchmarkBase::count_events(PROCEDURE procedure,
|
|
67
|
+
size_t iterations) {
|
|
68
|
+
event_collector collector;
|
|
69
|
+
event_aggregate all{};
|
|
70
|
+
// Some inputs are just too small to measure accurately, so we need to scale
|
|
71
|
+
// them up.
|
|
72
|
+
size_t multiplier = 1;
|
|
73
|
+
while (true) {
|
|
74
|
+
event_aggregate test{};
|
|
75
|
+
collector.start();
|
|
76
|
+
for (size_t i = 0; i < multiplier; i++) {
|
|
77
|
+
procedure();
|
|
78
|
+
}
|
|
79
|
+
event_count allocate_count = collector.end();
|
|
80
|
+
test << allocate_count;
|
|
81
|
+
if (test.best.elapsed_ns() < 4000) {
|
|
82
|
+
multiplier *= 2;
|
|
83
|
+
} else {
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
for (size_t i = 0; i < iterations; i++) {
|
|
88
|
+
collector.start();
|
|
89
|
+
for (size_t i = 0; i < multiplier; i++) {
|
|
90
|
+
procedure();
|
|
91
|
+
}
|
|
92
|
+
event_count allocate_count = collector.end();
|
|
93
|
+
all << allocate_count / multiplier;
|
|
94
|
+
}
|
|
95
|
+
all.has_events = collector.has_events();
|
|
96
|
+
return all;
|
|
97
|
+
}
|
|
98
|
+
} // namespace simdutf::benchmarks
|