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.
Files changed (732) hide show
  1. package/QuickCrypto.podspec +12 -38
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +3 -0
  4. package/cpp/utils/HybridUtils.cpp +39 -77
  5. package/deps/simdutf/.clang-format +4 -0
  6. package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +62 -0
  7. package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +1 -0
  8. package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +35 -0
  9. package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +29 -0
  10. package/deps/simdutf/.github/pull_request_template.md +51 -0
  11. package/deps/simdutf/.github/workflows/aarch64.yml +39 -0
  12. package/deps/simdutf/.github/workflows/alpine.yml +27 -0
  13. package/deps/simdutf/.github/workflows/amalgamation_demos.yml +34 -0
  14. package/deps/simdutf/.github/workflows/armv7.yml +32 -0
  15. package/deps/simdutf/.github/workflows/atomic_fuzz.yml +25 -0
  16. package/deps/simdutf/.github/workflows/cifuzz.yml +37 -0
  17. package/deps/simdutf/.github/workflows/clangformat.yml +36 -0
  18. package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +40 -0
  19. package/deps/simdutf/.github/workflows/debian.yml +33 -0
  20. package/deps/simdutf/.github/workflows/documentation.yml +36 -0
  21. package/deps/simdutf/.github/workflows/emscripten.yml +19 -0
  22. package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +39 -0
  23. package/deps/simdutf/.github/workflows/macos-latest.yml +29 -0
  24. package/deps/simdutf/.github/workflows/msys2-clang.yml +48 -0
  25. package/deps/simdutf/.github/workflows/msys2.yml +50 -0
  26. package/deps/simdutf/.github/workflows/ppc64le.yml +29 -0
  27. package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +35 -0
  28. package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +35 -0
  29. package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +31 -0
  30. package/deps/simdutf/.github/workflows/s390x.yml +29 -0
  31. package/deps/simdutf/.github/workflows/selective-amalgamation.yml +29 -0
  32. package/deps/simdutf/.github/workflows/typos.yml +19 -0
  33. package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +30 -0
  34. package/deps/simdutf/.github/workflows/ubuntu22.yml +32 -0
  35. package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +27 -0
  36. package/deps/simdutf/.github/workflows/ubuntu22sani.yml +29 -0
  37. package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +34 -0
  38. package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +34 -0
  39. package/deps/simdutf/.github/workflows/ubuntu24.yml +32 -0
  40. package/deps/simdutf/.github/workflows/ubuntu24sani.yml +36 -0
  41. package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +29 -0
  42. package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +21 -0
  43. package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +41 -0
  44. package/deps/simdutf/.github/workflows/vs17-ci.yml +41 -0
  45. package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +41 -0
  46. package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +36 -0
  47. package/deps/simdutf/AI_USAGE_POLICY.md +56 -0
  48. package/deps/simdutf/AUTHORS +6 -0
  49. package/deps/simdutf/CMakeLists.txt +231 -0
  50. package/deps/simdutf/CONTRIBUTING.md +214 -0
  51. package/deps/simdutf/CONTRIBUTORS +1 -0
  52. package/deps/simdutf/Doxyfile +2584 -0
  53. package/deps/simdutf/LICENSE-APACHE +201 -0
  54. package/deps/simdutf/LICENSE-MIT +18 -0
  55. package/deps/simdutf/Makefile.crosscompile +54 -0
  56. package/deps/simdutf/README-RVV.md +16 -0
  57. package/deps/simdutf/README.md +2782 -0
  58. package/deps/simdutf/SECURITY.md +8 -0
  59. package/deps/simdutf/benchmarks/CMakeLists.txt +101 -0
  60. package/deps/simdutf/benchmarks/alignment.cpp +150 -0
  61. package/deps/simdutf/benchmarks/base64/CMakeLists.txt +30 -0
  62. package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +875 -0
  63. package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +49 -0
  64. package/deps/simdutf/benchmarks/base64/node_base64.h +227 -0
  65. package/deps/simdutf/benchmarks/base64/openssl3_base64.h +334 -0
  66. package/deps/simdutf/benchmarks/benchmark.cpp +65 -0
  67. package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +347 -0
  68. package/deps/simdutf/benchmarks/competition/.clang-format-ignore +5 -0
  69. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +1276 -0
  70. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +595 -0
  71. package/deps/simdutf/benchmarks/competition/README.md +7 -0
  72. package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +91 -0
  73. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +444 -0
  74. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +13183 -0
  75. package/deps/simdutf/benchmarks/competition/inoue2008/script.py +73 -0
  76. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +738 -0
  77. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +293 -0
  78. package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +8 -0
  79. package/deps/simdutf/benchmarks/competition/u8u16/Makefile +44 -0
  80. package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +169 -0
  81. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +148 -0
  82. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +45 -0
  83. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +34 -0
  84. package/deps/simdutf/benchmarks/competition/u8u16/README +56 -0
  85. package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +43 -0
  86. package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +27 -0
  87. package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +16 -0
  88. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +18 -0
  89. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +16 -0
  90. package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +28 -0
  91. package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +20 -0
  92. package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +2 -0
  93. package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +440 -0
  94. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +121 -0
  95. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +158 -0
  96. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +270 -0
  97. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +141 -0
  98. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +216 -0
  99. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +119 -0
  100. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +2430 -0
  101. package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +39 -0
  102. package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +421 -0
  103. package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +836 -0
  104. package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +222 -0
  105. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +4 -0
  106. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +5 -0
  107. package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +390 -0
  108. package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +18 -0
  109. package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +448 -0
  110. package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +284 -0
  111. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +1975 -0
  112. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
  113. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +2263 -0
  114. package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +239 -0
  115. package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +232 -0
  116. package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +194 -0
  117. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +193 -0
  118. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +167 -0
  119. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +288 -0
  120. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +117 -0
  121. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +2 -0
  122. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +2 -0
  123. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +3 -0
  124. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +2 -0
  125. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +2 -0
  126. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +3 -0
  127. package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +2 -0
  128. package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +23 -0
  129. package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +44 -0
  130. package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +106 -0
  131. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +11 -0
  132. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +13 -0
  133. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +13 -0
  134. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +13 -0
  135. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +14 -0
  136. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +11 -0
  137. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +8 -0
  138. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +12 -0
  139. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +13 -0
  140. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +14 -0
  141. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +11 -0
  142. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +8 -0
  143. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +11 -0
  144. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +12 -0
  145. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +13 -0
  146. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +10 -0
  147. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +9 -0
  148. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +25 -0
  149. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +94 -0
  150. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +20 -0
  151. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +2 -0
  152. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +1 -0
  153. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +75 -0
  154. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +47 -0
  155. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +17 -0
  156. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +76 -0
  157. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +35 -0
  158. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +117 -0
  159. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +210 -0
  160. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +158 -0
  161. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +104 -0
  162. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +334 -0
  163. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +186 -0
  164. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +140 -0
  165. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +42 -0
  166. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +100 -0
  167. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +57 -0
  168. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +85 -0
  169. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +27 -0
  170. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +126 -0
  171. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +108 -0
  172. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +139 -0
  173. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +74 -0
  174. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +65 -0
  175. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +91 -0
  176. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +772 -0
  177. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +12 -0
  178. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +486 -0
  179. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +162 -0
  180. package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +15 -0
  181. package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +292 -0
  182. package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +23 -0
  183. package/deps/simdutf/benchmarks/competition/utfcpp/README.md +1503 -0
  184. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +335 -0
  185. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +338 -0
  186. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +103 -0
  187. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +103 -0
  188. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +274 -0
  189. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +34 -0
  190. package/deps/simdutf/benchmarks/dataset/README.md +155 -0
  191. package/deps/simdutf/benchmarks/dataset/emoji.txt +204 -0
  192. package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +40 -0
  193. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +80 -0
  194. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +20 -0
  195. package/deps/simdutf/benchmarks/find/CMakeLists.txt +6 -0
  196. package/deps/simdutf/benchmarks/find/findbenchmark.cpp +63 -0
  197. package/deps/simdutf/benchmarks/find/findbenchmarker.h +46 -0
  198. package/deps/simdutf/benchmarks/shortbench.cpp +555 -0
  199. package/deps/simdutf/benchmarks/src/CMakeLists.txt +52 -0
  200. package/deps/simdutf/benchmarks/src/apple_arm_events.h +1104 -0
  201. package/deps/simdutf/benchmarks/src/benchmark.cpp +3899 -0
  202. package/deps/simdutf/benchmarks/src/benchmark.h +317 -0
  203. package/deps/simdutf/benchmarks/src/benchmark_base.cpp +144 -0
  204. package/deps/simdutf/benchmarks/src/benchmark_base.h +98 -0
  205. package/deps/simdutf/benchmarks/src/cmdline.cpp +176 -0
  206. package/deps/simdutf/benchmarks/src/cmdline.h +35 -0
  207. package/deps/simdutf/benchmarks/src/event_counter.h +162 -0
  208. package/deps/simdutf/benchmarks/src/linux-perf-events.h +104 -0
  209. package/deps/simdutf/benchmarks/stream.cpp +209 -0
  210. package/deps/simdutf/benchmarks/threaded.cpp +123 -0
  211. package/deps/simdutf/cmake/CPM.cmake +1363 -0
  212. package/deps/simdutf/cmake/JoinPaths.cmake +23 -0
  213. package/deps/simdutf/cmake/add_cpp_test.cmake +68 -0
  214. package/deps/simdutf/cmake/simdutf-config.cmake.in +2 -0
  215. package/deps/simdutf/cmake/simdutf-flags.cmake +26 -0
  216. package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +4 -0
  217. package/deps/simdutf/cmake/toolchains-dev/README.md +32 -0
  218. package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +14 -0
  219. package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +22 -0
  220. package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +16 -0
  221. package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +16 -0
  222. package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +16 -0
  223. package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +38 -0
  224. package/deps/simdutf/doc/avx512.png +0 -0
  225. package/deps/simdutf/doc/logo.png +0 -0
  226. package/deps/simdutf/doc/logo.svg +165 -0
  227. package/deps/simdutf/doc/node2023.png +0 -0
  228. package/deps/simdutf/doc/shortinput.md +78 -0
  229. package/deps/simdutf/doc/utf16utf8.png +0 -0
  230. package/deps/simdutf/doc/utf8utf16.png +0 -0
  231. package/deps/simdutf/doc/widelogo.png +0 -0
  232. package/deps/simdutf/doxygen.py +50 -0
  233. package/deps/simdutf/fuzz/.clang-format +9 -0
  234. package/deps/simdutf/fuzz/CMakeLists.txt +45 -0
  235. package/deps/simdutf/fuzz/README.md +168 -0
  236. package/deps/simdutf/fuzz/atomic_base64.cpp +448 -0
  237. package/deps/simdutf/fuzz/base64.cpp +278 -0
  238. package/deps/simdutf/fuzz/build.sh +83 -0
  239. package/deps/simdutf/fuzz/conversion.cpp +669 -0
  240. package/deps/simdutf/fuzz/helpers/.clang-format-ignore +1 -0
  241. package/deps/simdutf/fuzz/helpers/common.h +135 -0
  242. package/deps/simdutf/fuzz/helpers/nameof.hpp +1258 -0
  243. package/deps/simdutf/fuzz/main.cpp +72 -0
  244. package/deps/simdutf/fuzz/minimize_and_cleanse.sh +87 -0
  245. package/deps/simdutf/fuzz/misc.cpp +216 -0
  246. package/deps/simdutf/fuzz/random_fuzz.sh +154 -0
  247. package/deps/simdutf/fuzz/roundtrip.cpp +588 -0
  248. package/deps/simdutf/fuzz/safe_conversion.cpp +104 -0
  249. package/deps/simdutf/include/simdutf/avx512.h +79 -0
  250. package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
  251. package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
  252. package/deps/simdutf/include/simdutf/common_defs.h +186 -0
  253. package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
  254. package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
  255. package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
  256. package/deps/simdutf/include/simdutf/error.h +126 -0
  257. package/deps/simdutf/include/simdutf/implementation.h +7081 -0
  258. package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
  259. package/deps/simdutf/include/simdutf/portability.h +285 -0
  260. package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
  261. package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
  262. package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
  263. package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
  264. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
  265. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
  266. package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
  267. package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
  268. package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
  269. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
  270. package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
  271. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
  272. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
  273. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
  274. package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
  275. package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
  276. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
  277. package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
  278. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
  279. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
  280. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
  281. package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
  282. package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
  283. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
  284. package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
  285. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
  286. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
  287. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
  288. package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
  289. package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
  290. package/deps/simdutf/include/simdutf.h +26 -0
  291. package/deps/simdutf/include/simdutf_c.h +342 -0
  292. package/deps/simdutf/riscv/Dockerfile +16 -0
  293. package/deps/simdutf/riscv/README.md +24 -0
  294. package/deps/simdutf/riscv/remove-docker-station +8 -0
  295. package/deps/simdutf/riscv/run-docker-station +31 -0
  296. package/deps/simdutf/scripts/.flake8 +2 -0
  297. package/deps/simdutf/scripts/Makefile +2 -0
  298. package/deps/simdutf/scripts/README_ADD_FUNCTION.md +49 -0
  299. package/deps/simdutf/scripts/add_function.py +330 -0
  300. package/deps/simdutf/scripts/amalgamation_tests.py +156 -0
  301. package/deps/simdutf/scripts/base64/Makefile +2 -0
  302. package/deps/simdutf/scripts/base64/README.md +2 -0
  303. package/deps/simdutf/scripts/base64/avx512.py +76 -0
  304. package/deps/simdutf/scripts/base64/neon_decode.py +143 -0
  305. package/deps/simdutf/scripts/base64/neon_generate_lut.py +101 -0
  306. package/deps/simdutf/scripts/base64/sse.py +252 -0
  307. package/deps/simdutf/scripts/base64/sseregular.py +160 -0
  308. package/deps/simdutf/scripts/base64/sseurl.py +283 -0
  309. package/deps/simdutf/scripts/base64/table.py +59 -0
  310. package/deps/simdutf/scripts/base64bench_print.py +145 -0
  311. package/deps/simdutf/scripts/benchmark-all.py +119 -0
  312. package/deps/simdutf/scripts/benchmark_print.py +324 -0
  313. package/deps/simdutf/scripts/check_feature_macros.py +156 -0
  314. package/deps/simdutf/scripts/check_typos.sh +13 -0
  315. package/deps/simdutf/scripts/clang_format.sh +35 -0
  316. package/deps/simdutf/scripts/clang_format_docker.sh +38 -0
  317. package/deps/simdutf/scripts/common.py +24 -0
  318. package/deps/simdutf/scripts/compilation_benchmark.py +55 -0
  319. package/deps/simdutf/scripts/compile_many_variations.sh +64 -0
  320. package/deps/simdutf/scripts/create_latex_table.py +62 -0
  321. package/deps/simdutf/scripts/docker/Dockerfile +14 -0
  322. package/deps/simdutf/scripts/docker/Makefile +9 -0
  323. package/deps/simdutf/scripts/docker/README.md +30 -0
  324. package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
  325. package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +155 -0
  326. package/deps/simdutf/scripts/prepare_doxygen.sh +21 -0
  327. package/deps/simdutf/scripts/release.py +197 -0
  328. package/deps/simdutf/scripts/shortinputplots.py +97 -0
  329. package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +422 -0
  330. package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +105 -0
  331. package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +186 -0
  332. package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +137 -0
  333. package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +129 -0
  334. package/deps/simdutf/scripts/table.py +207 -0
  335. package/deps/simdutf/scripts/tests/new.txt +33 -0
  336. package/deps/simdutf/scripts/tests/old.txt +33 -0
  337. package/deps/simdutf/scripts/tests/results.txt +272 -0
  338. package/deps/simdutf/simdutf.pc.in +11 -0
  339. package/deps/simdutf/singleheader/.flake8 +2 -0
  340. package/deps/simdutf/singleheader/CMakeLists.txt +64 -0
  341. package/deps/simdutf/singleheader/README-dev.md +81 -0
  342. package/deps/simdutf/singleheader/README.md +19 -0
  343. package/deps/simdutf/singleheader/amalgamate.py +513 -0
  344. package/deps/simdutf/singleheader/amalgamation_demo.c +59 -0
  345. package/deps/simdutf/singleheader/amalgamation_demo.cpp +54 -0
  346. package/deps/simdutf/singleheader/test-features.py +262 -0
  347. package/deps/simdutf/src/CMakeLists.txt +78 -0
  348. package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
  349. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
  350. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
  351. package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
  352. package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
  353. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
  354. package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
  355. package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
  356. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
  357. package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
  358. package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
  359. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
  360. package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
  361. package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
  362. package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
  363. package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
  364. package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
  365. package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
  366. package/deps/simdutf/src/encoding_types.cpp +67 -0
  367. package/deps/simdutf/src/error.cpp +3 -0
  368. package/deps/simdutf/src/fallback/implementation.cpp +589 -0
  369. package/deps/simdutf/src/generic/ascii_validation.h +50 -0
  370. package/deps/simdutf/src/generic/base64.h +233 -0
  371. package/deps/simdutf/src/generic/base64lengths.h +63 -0
  372. package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
  373. package/deps/simdutf/src/generic/find.h +75 -0
  374. package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
  375. package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
  376. package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
  377. package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
  378. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
  379. package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
  380. package/deps/simdutf/src/generic/utf16.h +73 -0
  381. package/deps/simdutf/src/generic/utf32.h +136 -0
  382. package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
  383. package/deps/simdutf/src/generic/utf8.h +92 -0
  384. package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
  385. package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
  386. package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
  387. package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
  388. package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
  389. package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
  390. package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
  391. package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
  392. package/deps/simdutf/src/generic/validate_utf16.h +164 -0
  393. package/deps/simdutf/src/generic/validate_utf32.h +99 -0
  394. package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
  395. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
  396. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
  397. package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
  398. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
  399. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
  400. package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
  401. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
  402. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
  403. package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
  404. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
  405. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
  406. package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
  407. package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
  408. package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
  409. package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
  410. package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
  411. package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
  412. package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
  413. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
  414. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
  415. package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
  416. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
  417. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
  418. package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
  419. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
  420. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
  421. package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
  422. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
  423. package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
  424. package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
  425. package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
  426. package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
  427. package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
  428. package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
  429. package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
  430. package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
  431. package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
  432. package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
  433. package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
  434. package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
  435. package/deps/simdutf/src/implementation.cpp +2526 -0
  436. package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
  437. package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
  438. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
  439. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
  440. package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
  441. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
  442. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
  443. package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
  444. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
  445. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
  446. package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
  447. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
  448. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
  449. package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
  450. package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
  451. package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
  452. package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
  453. package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
  454. package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
  455. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
  456. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
  457. package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
  458. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
  459. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
  460. package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
  461. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
  462. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
  463. package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
  464. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
  465. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
  466. package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
  467. package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
  468. package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
  469. package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
  470. package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
  471. package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
  472. package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
  473. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
  474. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
  475. package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
  476. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
  477. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
  478. package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
  479. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
  480. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
  481. package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
  482. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
  483. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
  484. package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
  485. package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
  486. package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
  487. package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
  488. package/deps/simdutf/src/ppc64/templates.cpp +91 -0
  489. package/deps/simdutf/src/rvv/implementation.cpp +138 -0
  490. package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
  491. package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
  492. package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
  493. package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
  494. package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
  495. package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
  496. package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
  497. package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
  498. package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
  499. package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
  500. package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
  501. package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
  502. package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
  503. package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
  504. package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
  505. package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
  506. package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
  507. package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
  508. package/deps/simdutf/src/simdutf/arm64.h +43 -0
  509. package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
  510. package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
  511. package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
  512. package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
  513. package/deps/simdutf/src/simdutf/fallback.h +42 -0
  514. package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
  515. package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
  516. package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
  517. package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
  518. package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
  519. package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
  520. package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
  521. package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
  522. package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
  523. package/deps/simdutf/src/simdutf/haswell.h +63 -0
  524. package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
  525. package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
  526. package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
  527. package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
  528. package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
  529. package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
  530. package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
  531. package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
  532. package/deps/simdutf/src/simdutf/icelake.h +81 -0
  533. package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
  534. package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
  535. package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
  536. package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
  537. package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
  538. package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
  539. package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
  540. package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
  541. package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
  542. package/deps/simdutf/src/simdutf/lasx.h +49 -0
  543. package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
  544. package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
  545. package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
  546. package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
  547. package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
  548. package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
  549. package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
  550. package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
  551. package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
  552. package/deps/simdutf/src/simdutf/lsx.h +52 -0
  553. package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
  554. package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
  555. package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
  556. package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
  557. package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
  558. package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
  559. package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
  560. package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
  561. package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
  562. package/deps/simdutf/src/simdutf/ppc64.h +40 -0
  563. package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
  564. package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
  565. package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
  566. package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
  567. package/deps/simdutf/src/simdutf/rvv.h +41 -0
  568. package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
  569. package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
  570. package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
  571. package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
  572. package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
  573. package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
  574. package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
  575. package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
  576. package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
  577. package/deps/simdutf/src/simdutf/westmere.h +59 -0
  578. package/deps/simdutf/src/simdutf.cpp +152 -0
  579. package/deps/simdutf/src/simdutf_c.cpp +525 -0
  580. package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
  581. package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
  582. package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
  583. package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
  584. package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
  585. package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
  586. package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
  587. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
  588. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
  589. package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
  590. package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
  591. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
  592. package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
  593. package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
  594. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
  595. package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
  596. package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
  597. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
  598. package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
  599. package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
  600. package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
  601. package/deps/simdutf/tests/CMakeLists.txt +483 -0
  602. package/deps/simdutf/tests/atomic_base64_tests.cpp +2845 -0
  603. package/deps/simdutf/tests/base64_tests.cpp +3617 -0
  604. package/deps/simdutf/tests/basic_fuzzer.cpp +805 -0
  605. package/deps/simdutf/tests/bele_tests.cpp +182 -0
  606. package/deps/simdutf/tests/constexpr_base64_tests.cpp +387 -0
  607. package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +52 -0
  608. package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +80 -0
  609. package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +66 -0
  610. package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +120 -0
  611. package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +203 -0
  612. package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +276 -0
  613. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +109 -0
  614. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +136 -0
  615. package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +193 -0
  616. package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +381 -0
  617. package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +259 -0
  618. package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +266 -0
  619. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +148 -0
  620. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +176 -0
  621. package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +213 -0
  622. package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +318 -0
  623. package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +343 -0
  624. package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +271 -0
  625. package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +111 -0
  626. package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +96 -0
  627. package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +148 -0
  628. package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +192 -0
  629. package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +166 -0
  630. package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +215 -0
  631. package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +181 -0
  632. package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +261 -0
  633. package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +516 -0
  634. package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +579 -0
  635. package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +412 -0
  636. package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +480 -0
  637. package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +671 -0
  638. package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +455 -0
  639. package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +1204 -0
  640. package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +337 -0
  641. package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +37 -0
  642. package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +97 -0
  643. package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +126 -0
  644. package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +71 -0
  645. package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +122 -0
  646. package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +244 -0
  647. package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +49 -0
  648. package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +92 -0
  649. package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +114 -0
  650. package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +109 -0
  651. package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +84 -0
  652. package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +124 -0
  653. package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +221 -0
  654. package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +155 -0
  655. package/deps/simdutf/tests/count_utf16be.cpp +64 -0
  656. package/deps/simdutf/tests/count_utf16le.cpp +61 -0
  657. package/deps/simdutf/tests/count_utf8.cpp +87 -0
  658. package/deps/simdutf/tests/detect_encodings_tests.cpp +312 -0
  659. package/deps/simdutf/tests/embed/valid_utf8.txt +1 -0
  660. package/deps/simdutf/tests/embed_tests.cpp +22 -0
  661. package/deps/simdutf/tests/find_tests.cpp +77 -0
  662. package/deps/simdutf/tests/fixed_string_tests.cpp +153 -0
  663. package/deps/simdutf/tests/helpers/CMakeLists.txt +25 -0
  664. package/deps/simdutf/tests/helpers/compiletime_conversions.h +222 -0
  665. package/deps/simdutf/tests/helpers/fixed_string.h +267 -0
  666. package/deps/simdutf/tests/helpers/random_int.cpp +30 -0
  667. package/deps/simdutf/tests/helpers/random_int.h +39 -0
  668. package/deps/simdutf/tests/helpers/random_utf16.cpp +123 -0
  669. package/deps/simdutf/tests/helpers/random_utf16.h +52 -0
  670. package/deps/simdutf/tests/helpers/random_utf32.cpp +41 -0
  671. package/deps/simdutf/tests/helpers/random_utf32.h +40 -0
  672. package/deps/simdutf/tests/helpers/random_utf8.cpp +93 -0
  673. package/deps/simdutf/tests/helpers/random_utf8.h +36 -0
  674. package/deps/simdutf/tests/helpers/test.cpp +231 -0
  675. package/deps/simdutf/tests/helpers/test.h +193 -0
  676. package/deps/simdutf/tests/helpers/transcode_test_base.cpp +1257 -0
  677. package/deps/simdutf/tests/helpers/transcode_test_base.h +683 -0
  678. package/deps/simdutf/tests/helpers/utf16.h +27 -0
  679. package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +43 -0
  680. package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +47 -0
  681. package/deps/simdutf/tests/internal_tests.cpp +27 -0
  682. package/deps/simdutf/tests/null_safety_tests.cpp +94 -0
  683. package/deps/simdutf/tests/random_fuzzer.cpp +779 -0
  684. package/deps/simdutf/tests/readme_tests.cpp +274 -0
  685. package/deps/simdutf/tests/reference/CMakeLists.txt +23 -0
  686. package/deps/simdutf/tests/reference/decode_utf16.h +81 -0
  687. package/deps/simdutf/tests/reference/decode_utf32.h +47 -0
  688. package/deps/simdutf/tests/reference/encode_latin1.cpp +1 -0
  689. package/deps/simdutf/tests/reference/encode_latin1.h +32 -0
  690. package/deps/simdutf/tests/reference/encode_utf16.cpp +49 -0
  691. package/deps/simdutf/tests/reference/encode_utf16.h +20 -0
  692. package/deps/simdutf/tests/reference/encode_utf32.cpp +1 -0
  693. package/deps/simdutf/tests/reference/encode_utf32.h +36 -0
  694. package/deps/simdutf/tests/reference/encode_utf8.cpp +1 -0
  695. package/deps/simdutf/tests/reference/encode_utf8.h +40 -0
  696. package/deps/simdutf/tests/reference/validate_utf16.cpp +60 -0
  697. package/deps/simdutf/tests/reference/validate_utf16.h +14 -0
  698. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +35 -0
  699. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +13 -0
  700. package/deps/simdutf/tests/reference/validate_utf32.cpp +27 -0
  701. package/deps/simdutf/tests/reference/validate_utf32.h +12 -0
  702. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +27 -0
  703. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +12 -0
  704. package/deps/simdutf/tests/reference/validate_utf8.cpp +82 -0
  705. package/deps/simdutf/tests/reference/validate_utf8.h +11 -0
  706. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +43 -0
  707. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +12 -0
  708. package/deps/simdutf/tests/select_implementation.cpp +43 -0
  709. package/deps/simdutf/tests/simdutf_c_tests.cpp +244 -0
  710. package/deps/simdutf/tests/span_tests.cpp +401 -0
  711. package/deps/simdutf/tests/special_tests.cpp +559 -0
  712. package/deps/simdutf/tests/straight_c_test.c +187 -0
  713. package/deps/simdutf/tests/text_encoding_tests.cpp +77 -0
  714. package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +377 -0
  715. package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +202 -0
  716. package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +165 -0
  717. package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +77 -0
  718. package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +175 -0
  719. package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +188 -0
  720. package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +268 -0
  721. package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +274 -0
  722. package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +92 -0
  723. package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +114 -0
  724. package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +178 -0
  725. package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +88 -0
  726. package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +33 -0
  727. package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +228 -0
  728. package/deps/simdutf/tools/CMakeLists.txt +85 -0
  729. package/deps/simdutf/tools/fastbase64.cpp +250 -0
  730. package/deps/simdutf/tools/sutf.cpp +556 -0
  731. package/deps/simdutf/tools/sutf.h +40 -0
  732. package/package.json +2 -2
@@ -0,0 +1,1975 @@
1
+ /*3:*/
2
+ #line 197 "libu8u16.w"
3
+
4
+
5
+ size_t
6
+ u8u16(char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft);
7
+
8
+ /*:3*//*4:*/
9
+ #line 222 "libu8u16.w"
10
+
11
+ size_t
12
+ buffered_u8u16(char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft);
13
+
14
+ /*:4*//*5:*/
15
+ #line 253 "libu8u16.w"
16
+
17
+ #include <stdlib.h>
18
+ #include <errno.h>
19
+ #include <stdint.h>
20
+ #include <string.h>
21
+ /*2:*/
22
+ #line 175 "libu8u16.w"
23
+
24
+ #ifndef U8U16_TARGET
25
+ #error "No U8U16_TARGET defined."
26
+ #endif
27
+
28
+ /*:2*//*75:*/
29
+ #line 1694 "libu8u16.w"
30
+
31
+ #if (U8U16_TARGET == ALTIVEC_TARGET)
32
+ #include "../lib/altivec_simd.h"
33
+ #endif
34
+
35
+
36
+ /*:75*//*88:*/
37
+ #line 2020 "libu8u16.w"
38
+
39
+ #if (U8U16_TARGET == SPU_TARGET)
40
+ #include "spu_simd.h"
41
+ #include "vmx2spu.h"
42
+ #endif
43
+
44
+
45
+
46
+
47
+ /*:88*//*96:*/
48
+ #line 2118 "libu8u16.w"
49
+
50
+ #if (U8U16_TARGET == MMX_TARGET)
51
+ #include "../lib/mmx_simd.h"
52
+ #endif
53
+
54
+ /*:96*//*104:*/
55
+ #line 2258 "libu8u16.w"
56
+
57
+ #if (U8U16_TARGET == SSE_TARGET)
58
+ #include "../lib/sse_simd.h"
59
+ #endif
60
+
61
+
62
+ /*:104*/
63
+ #line 258 "libu8u16.w"
64
+
65
+ /*8:*/
66
+ #line 303 "libu8u16.w"
67
+
68
+ typedef SIMD_type BytePack;
69
+ typedef SIMD_type BitBlock;
70
+
71
+
72
+ /*:8*/
73
+ #line 259 "libu8u16.w"
74
+
75
+ #define align_ceil(addr) ((addr+PACKSIZE-1) &-PACKSIZE) \
76
+
77
+ #define PACKSIZE sizeof(SIMD_type)
78
+ #define BLOCKSIZE (sizeof(SIMD_type) *8)
79
+ #define s2p_ideal(s0,s1,s2,s3,s4,s5,s6,s7,p0,p1,p2,p3,p4,p5,p6,p7) \
80
+ { \
81
+ BitBlock bit0123_0,bit0123_1,bit0123_2,bit0123_3, \
82
+ bit4567_0,bit4567_1,bit4567_2,bit4567_3; \
83
+ BitBlock bit01_0,bit01_1,bit23_0,bit23_1,bit45_0,bit45_1,bit67_0,bit67_1; \
84
+ bit0123_0= simd_pack_8_hh(s0,s1) ; \
85
+ bit0123_1= simd_pack_8_hh(s2,s3) ; \
86
+ bit0123_2= simd_pack_8_hh(s4,s5) ; \
87
+ bit0123_3= simd_pack_8_hh(s6,s7) ; \
88
+ bit4567_0= simd_pack_8_ll(s0,s1) ; \
89
+ bit4567_1= simd_pack_8_ll(s2,s3) ; \
90
+ bit4567_2= simd_pack_8_ll(s4,s5) ; \
91
+ bit4567_3= simd_pack_8_ll(s6,s7) ; \
92
+ bit01_0= simd_pack_4_hh(bit0123_0,bit0123_1) ; \
93
+ bit01_1= simd_pack_4_hh(bit0123_2,bit0123_3) ; \
94
+ bit23_0= simd_pack_4_ll(bit0123_0,bit0123_1) ; \
95
+ bit23_1= simd_pack_4_ll(bit0123_2,bit0123_3) ; \
96
+ bit45_0= simd_pack_4_hh(bit4567_0,bit4567_1) ; \
97
+ bit45_1= simd_pack_4_hh(bit4567_2,bit4567_3) ; \
98
+ bit67_0= simd_pack_4_ll(bit4567_0,bit4567_1) ; \
99
+ bit67_1= simd_pack_4_ll(bit4567_2,bit4567_3) ; \
100
+ p0= simd_pack_2_hh(bit01_0,bit01_1) ; \
101
+ p1= simd_pack_2_ll(bit01_0,bit01_1) ; \
102
+ p2= simd_pack_2_hh(bit23_0,bit23_1) ; \
103
+ p3= simd_pack_2_ll(bit23_0,bit23_1) ; \
104
+ p4= simd_pack_2_hh(bit45_0,bit45_1) ; \
105
+ p5= simd_pack_2_ll(bit45_0,bit45_1) ; \
106
+ p6= simd_pack_2_hh(bit67_0,bit67_1) ; \
107
+ p7= simd_pack_2_ll(bit67_0,bit67_1) ; \
108
+ } \
109
+
110
+ #define p2s_ideal(p0,p1,p2,p3,p4,p5,p6,p7,s0,s1,s2,s3,s4,s5,s6,s7) \
111
+ { \
112
+ BitBlock bit01_r0,bit01_r1,bit23_r0,bit23_r1,bit45_r0,bit45_r1,bit67_r0,bit67_r1; \
113
+ BitBlock bit0123_r0,bit0123_r1,bit0123_r2,bit0123_r3, \
114
+ bit4567_r0,bit4567_r1,bit4567_r2,bit4567_r3; \
115
+ bit01_r0= simd_mergeh_1(p0,p1) ; \
116
+ bit01_r1= simd_mergel_1(p0,p1) ; \
117
+ bit23_r0= simd_mergeh_1(p2,p3) ; \
118
+ bit23_r1= simd_mergel_1(p2,p3) ; \
119
+ bit45_r0= simd_mergeh_1(p4,p5) ; \
120
+ bit45_r1= simd_mergel_1(p4,p5) ; \
121
+ bit67_r0= simd_mergeh_1(p6,p7) ; \
122
+ bit67_r1= simd_mergel_1(p6,p7) ; \
123
+ bit0123_r0= simd_mergeh_2(bit01_r0,bit23_r0) ; \
124
+ bit0123_r1= simd_mergel_2(bit01_r0,bit23_r0) ; \
125
+ bit0123_r2= simd_mergeh_2(bit01_r1,bit23_r1) ; \
126
+ bit0123_r3= simd_mergel_2(bit01_r1,bit23_r1) ; \
127
+ bit4567_r0= simd_mergeh_2(bit45_r0,bit67_r0) ; \
128
+ bit4567_r1= simd_mergel_2(bit45_r0,bit67_r0) ; \
129
+ bit4567_r2= simd_mergeh_2(bit45_r1,bit67_r1) ; \
130
+ bit4567_r3= simd_mergel_2(bit45_r1,bit67_r1) ; \
131
+ s0= simd_mergeh_4(bit0123_r0,bit4567_r0) ; \
132
+ s1= simd_mergel_4(bit0123_r0,bit4567_r0) ; \
133
+ s2= simd_mergeh_4(bit0123_r1,bit4567_r1) ; \
134
+ s3= simd_mergel_4(bit0123_r1,bit4567_r1) ; \
135
+ s4= simd_mergeh_4(bit0123_r2,bit4567_r2) ; \
136
+ s5= simd_mergel_4(bit0123_r2,bit4567_r2) ; \
137
+ s6= simd_mergeh_4(bit0123_r3,bit4567_r3) ; \
138
+ s7= simd_mergel_4(bit0123_r3,bit4567_r3) ; \
139
+ } \
140
+
141
+ #define p2s_567_ideal(p5,p6,p7,s0,s1,s2,s3,s4,s5,s6,s7) \
142
+ { \
143
+ BitBlock bit45_r0,bit45_r1,bit67_r0,bit67_r1; \
144
+ BitBlock bit4567_r0,bit4567_r1,bit4567_r2,bit4567_r3; \
145
+ bit45_r0= simd_mergeh_1(simd_const_8(0) ,p5) ; \
146
+ bit45_r1= simd_mergel_1(simd_const_8(0) ,p5) ; \
147
+ bit67_r0= simd_mergeh_1(p6,p7) ; \
148
+ bit67_r1= simd_mergel_1(p6,p7) ; \
149
+ bit4567_r0= simd_mergeh_2(bit45_r0,bit67_r0) ; \
150
+ bit4567_r1= simd_mergel_2(bit45_r0,bit67_r0) ; \
151
+ bit4567_r2= simd_mergeh_2(bit45_r1,bit67_r1) ; \
152
+ bit4567_r3= simd_mergel_2(bit45_r1,bit67_r1) ; \
153
+ s0= simd_mergeh_4(simd_const_8(0) ,bit4567_r0) ; \
154
+ s1= simd_mergel_4(simd_const_8(0) ,bit4567_r0) ; \
155
+ s2= simd_mergeh_4(simd_const_8(0) ,bit4567_r1) ; \
156
+ s3= simd_mergel_4(simd_const_8(0) ,bit4567_r1) ; \
157
+ s4= simd_mergeh_4(simd_const_8(0) ,bit4567_r2) ; \
158
+ s5= simd_mergel_4(simd_const_8(0) ,bit4567_r2) ; \
159
+ s6= simd_mergeh_4(simd_const_8(0) ,bit4567_r3) ; \
160
+ s7= simd_mergel_4(simd_const_8(0) ,bit4567_r3) ; \
161
+ } \
162
+
163
+ #define is_prefix_byte(byte) (byte>=0xC0)
164
+ #define is_prefix3or4_byte(byte) (byte>=0xE0)
165
+ #define is_prefix4_byte(byte) (byte>=0xF0) \
166
+
167
+ #define pack_base_addr(addr) ((BytePack*) (((intptr_t) (addr) ) &(-PACKSIZE) ) ) \
168
+
169
+ #define align_offset(addr) (((intptr_t) addr) &(PACKSIZE-1) )
170
+ #define unaligned_output_step(reg,bytes) \
171
+ sisd_store_unaligned(reg,(BytePack*) &U16out[u16advance]) ; \
172
+ u16advance+= bytes; \
173
+
174
+ #define is_suffix_byte(byte) (byte>=0x80&&byte<=0xBF) \
175
+
176
+ #define s2p_step(s0,s1,hi_mask,shift,p0,p1) \
177
+ { \
178
+ BitBlock t0,t1; \
179
+ t0= simd_pack_16_hh(s0,s1) ; \
180
+ t1= simd_pack_16_ll(s0,s1) ; \
181
+ p0= simd_if(hi_mask,t0,simd_srli_16(t1,shift) ) ; \
182
+ p1= simd_if(hi_mask,simd_slli_16(t0,shift) ,t1) ; \
183
+ } \
184
+
185
+ #define s2p_bytepack(s0,s1,s2,s3,s4,s5,s6,s7,p0,p1,p2,p3,p4,p5,p6,p7) \
186
+ {BitBlock bit00224466_0,bit00224466_1,bit00224466_2,bit00224466_3; \
187
+ BitBlock bit11335577_0,bit11335577_1,bit11335577_2,bit11335577_3; \
188
+ BitBlock bit00004444_0,bit22226666_0,bit00004444_1,bit22226666_1; \
189
+ BitBlock bit11115555_0,bit33337777_0,bit11115555_1,bit33337777_1; \
190
+ s2p_step(s0,s1,mask_2,1,bit00224466_0,bit11335577_0) \
191
+ s2p_step(s2,s3,mask_2,1,bit00224466_1,bit11335577_1) \
192
+ s2p_step(s4,s5,mask_2,1,bit00224466_2,bit11335577_2) \
193
+ s2p_step(s6,s7,mask_2,1,bit00224466_3,bit11335577_3) \
194
+ s2p_step(bit00224466_0,bit00224466_1,mask_4,2,bit00004444_0,bit22226666_0) \
195
+ s2p_step(bit00224466_2,bit00224466_3,mask_4,2,bit00004444_1,bit22226666_1) \
196
+ s2p_step(bit11335577_0,bit11335577_1,mask_4,2,bit11115555_0,bit33337777_0) \
197
+ s2p_step(bit11335577_2,bit11335577_3,mask_4,2,bit11115555_1,bit33337777_1) \
198
+ s2p_step(bit00004444_0,bit00004444_1,mask_8,4,p0,p4) \
199
+ s2p_step(bit11115555_0,bit11115555_1,mask_8,4,p1,p5) \
200
+ s2p_step(bit22226666_0,bit22226666_1,mask_8,4,p2,p6) \
201
+ s2p_step(bit33337777_0,bit33337777_1,mask_8,4,p3,p7) \
202
+ } \
203
+
204
+ #define p2s_step(p0,p1,hi_mask,shift,s0,s1) \
205
+ { \
206
+ BitBlock t0,t1; \
207
+ t0= simd_if(hi_mask,p0,simd_srli_16(p1,shift) ) ; \
208
+ t1= simd_if(hi_mask,simd_slli_16(p0,shift) ,p1) ; \
209
+ s0= simd_mergeh_8(t0,t1) ; \
210
+ s1= simd_mergel_8(t0,t1) ; \
211
+ } \
212
+
213
+ #define p2s_bytemerge(p0,p1,p2,p3,p4,p5,p6,p7,s0,s1,s2,s3,s4,s5,s6,s7) \
214
+ { \
215
+ BitBlock bit00004444_0,bit22226666_0,bit00004444_1,bit22226666_1; \
216
+ BitBlock bit11115555_0,bit33337777_0,bit11115555_1,bit33337777_1; \
217
+ BitBlock bit00224466_0,bit00224466_1,bit00224466_2,bit00224466_3; \
218
+ BitBlock bit11335577_0,bit11335577_1,bit11335577_2,bit11335577_3; \
219
+ p2s_step(p0,p4,simd_himask_8,4,bit00004444_0,bit00004444_1) \
220
+ p2s_step(p1,p5,simd_himask_8,4,bit11115555_0,bit11115555_1) \
221
+ p2s_step(p2,p6,simd_himask_8,4,bit22226666_0,bit22226666_1) \
222
+ p2s_step(p3,p7,simd_himask_8,4,bit33337777_0,bit33337777_1) \
223
+ p2s_step(bit00004444_0,bit22226666_0,simd_himask_4,2,bit00224466_0,bit00224466_1) \
224
+ p2s_step(bit11115555_0,bit33337777_0,simd_himask_4,2,bit11335577_0,bit11335577_1) \
225
+ p2s_step(bit00004444_1,bit22226666_1,simd_himask_4,2,bit00224466_2,bit00224466_3) \
226
+ p2s_step(bit11115555_1,bit33337777_1,simd_himask_4,2,bit11335577_2,bit11335577_3) \
227
+ p2s_step(bit00224466_0,bit11335577_0,simd_himask_2,1,s0,s1) \
228
+ p2s_step(bit00224466_1,bit11335577_1,simd_himask_2,1,s2,s3) \
229
+ p2s_step(bit00224466_2,bit11335577_2,simd_himask_2,1,s4,s5) \
230
+ p2s_step(bit00224466_3,bit11335577_3,simd_himask_2,1,s6,s7) \
231
+ } \
232
+
233
+ #define p2s_halfstep(p1,hi_mask,shift,s0,s1) \
234
+ { \
235
+ BitBlock t0,t1; \
236
+ t0= simd_andc(sisd_srli(p1,shift) ,hi_mask) ; \
237
+ t1= simd_andc(p1,hi_mask) ; \
238
+ s0= simd_mergeh_8(t0,t1) ; \
239
+ s1= simd_mergel_8(t0,t1) ; \
240
+ }
241
+ #define p2s_567_bytemerge(p5,p6,p7,s0,s1,s2,s3,s4,s5,s6,s7) \
242
+ { \
243
+ BitBlock bit22226666_0,bit22226666_1; \
244
+ BitBlock bit11115555_0,bit33337777_0,bit11115555_1,bit33337777_1; \
245
+ BitBlock bit00224466_0,bit00224466_1,bit00224466_2,bit00224466_3; \
246
+ BitBlock bit11335577_0,bit11335577_1,bit11335577_2,bit11335577_3; \
247
+ p2s_halfstep(p5,simd_himask_8,4,bit11115555_0,bit11115555_1) \
248
+ p2s_halfstep(p6,simd_himask_8,4,bit22226666_0,bit22226666_1) \
249
+ p2s_halfstep(p7,simd_himask_8,4,bit33337777_0,bit33337777_1) \
250
+ p2s_halfstep(bit22226666_0,simd_himask_4,2,bit00224466_0,bit00224466_1) \
251
+ p2s_step(bit11115555_0,bit33337777_0,simd_himask_4,2,bit11335577_0,bit11335577_1) \
252
+ p2s_halfstep(bit22226666_1,simd_himask_4,2,bit00224466_2,bit00224466_3) \
253
+ p2s_step(bit11115555_1,bit33337777_1,simd_himask_4,2,bit11335577_2,bit11335577_3) \
254
+ p2s_step(bit00224466_0,bit11335577_0,simd_himask_2,1,s0,s1) \
255
+ p2s_step(bit00224466_1,bit11335577_1,simd_himask_2,1,s2,s3) \
256
+ p2s_step(bit00224466_2,bit11335577_2,simd_himask_2,1,s4,s5) \
257
+ p2s_step(bit00224466_3,bit11335577_3,simd_himask_2,1,s6,s7) \
258
+ } \
259
+
260
+ #define min(x,y) ((x) <(y) ?(x) :(y) ) \
261
+
262
+ #define unpack_packed_permutation(packed,high_perm,low_perm) \
263
+ { \
264
+ BitBlock even_perms= simd_srli_8(packed,4) ; \
265
+ BitBlock odd_perms= simd_andc(packed,simd_himask_8) ; \
266
+ high_perm= simd_mergeh_8(even_perms,odd_perms) ; \
267
+ low_perm= simd_mergel_8(even_perms,odd_perms) ; \
268
+ } \
269
+
270
+ #define output_step(vec,vec_num) \
271
+ { \
272
+ BitBlock rshift,lshift; \
273
+ rshift= vec_lvsr(u16advance,U16out) ; \
274
+ vec_stl(simd_permute(pending,vec,rshift) ,u16advance,U16out) ; \
275
+ lshift= simd_add_8(vec_0__15,vec_splat(u16_bytes_8,vec_num) ) ; \
276
+ pending= simd_permute(pending,vec,lshift) ; \
277
+ u16advance+= dbyte_count[vec_num]; \
278
+ } \
279
+ \
280
+
281
+ #define do_right4_shifts(vec,rshift1,rshift2) \
282
+ {BitBlock s2; \
283
+ vec= simd_sub_8(vec,sisd_srli(simd_and(rshift1,vec) ,1) ) ; \
284
+ s2= simd_and(rshift2,vec) ; \
285
+ vec= simd_or(sisd_srli(s2,2) ,simd_xor(vec,s2) ) ; \
286
+ }
287
+ #define do_right8_shifts(vec,rshift1,rshift2,rshift4) \
288
+ {BitBlock s2; \
289
+ vec= simd_sub_8(vec,simd_srli_16(simd_and(rshift1,vec) ,1) ) ; \
290
+ s2= simd_and(rshift2,vec) ; \
291
+ vec= simd_or(simd_srli_16(s2,2) ,simd_xor(vec,s2) ) ; \
292
+ s2= simd_and(rshift4,vec) ; \
293
+ vec= simd_or(simd_srli_16(s2,4) ,simd_xor(vec,s2) ) ; \
294
+ }
295
+
296
+ #line 260 "libu8u16.w"
297
+
298
+ /*16:*/
299
+ #line 387 "libu8u16.w"
300
+
301
+ #if BYTE_ORDER == BIG_ENDIAN
302
+ #define sisd_sfl(blk, n) sisd_srl(blk, n)
303
+ #define sisd_sbl(blk, n) sisd_sll(blk, n)
304
+ #define sisd_sfli(blk, n) sisd_srli(blk, n)
305
+ #define sisd_sbli(blk, n) sisd_slli(blk, n)
306
+ #endif
307
+ #if BYTE_ORDER == LITTLE_ENDIAN
308
+ #define sisd_sfl(blk, n) sisd_sll(blk, n)
309
+ #define sisd_sbl(blk, n) sisd_srl(blk, n)
310
+ #define sisd_sfli(blk, n) sisd_slli(blk, n)
311
+ #define sisd_sbli(blk, n) sisd_srli(blk, n)
312
+ #endif
313
+
314
+ #define bitblock_sfl(blk, n) sisd_sfl(blk, n)
315
+ #define bitblock_sbl(blk, n) sisd_sbl(blk, n)
316
+ #define bitblock_sfli(blk, n) sisd_sfli(blk, n)
317
+ #define bitblock_sbli(blk, n) sisd_sbli(blk, n)
318
+
319
+ /*:16*//*17:*/
320
+ #line 414 "libu8u16.w"
321
+
322
+ #if BYTE_ORDER == BIG_ENDIAN
323
+ #ifdef UTF16_LE
324
+ #define u16_merge0(a, b) simd_mergeh_8(b, a)
325
+ #define u16_merge1(a, b) simd_mergel_8(b, a)
326
+ #endif
327
+ #ifndef UTF16_LE
328
+ #define u16_merge0(a, b) simd_mergeh_8(a, b)
329
+ #define u16_merge1(a, b) simd_mergel_8(a, b)
330
+ #endif
331
+ #endif
332
+
333
+ #if BYTE_ORDER == LITTLE_ENDIAN
334
+ #ifdef UTF16_LE
335
+ #define u16_merge0(a, b) simd_mergel_8(a, b)
336
+ #define u16_merge1(a, b) simd_mergeh_8(a, b)
337
+ #endif
338
+ #ifndef UTF16_LE
339
+ #define u16_merge0(a, b) simd_mergel_8(b, a)
340
+ #define u16_merge1(a, b) simd_mergeh_8(b, a)
341
+ #endif
342
+ #endif
343
+
344
+ /*:17*/
345
+ #line 261 "libu8u16.w"
346
+
347
+ size_t
348
+ u8u16(char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft){
349
+ /*9:*/
350
+ #line 313 "libu8u16.w"
351
+
352
+ BytePack U8s0,U8s1,U8s2,U8s3,U8s4,U8s5,U8s6,U8s7;
353
+ BitBlock u8bit0,u8bit1,u8bit2,u8bit3,u8bit4,u8bit5,u8bit6,u8bit7;
354
+
355
+ /*:9*//*10:*/
356
+ #line 332 "libu8u16.w"
357
+
358
+ BitBlock u16hi0,u16hi1,u16hi2,u16hi3,u16hi4,u16hi5,u16hi6,u16hi7;
359
+ BitBlock u16lo0,u16lo1,u16lo2,u16lo3,u16lo4,u16lo5,u16lo6,u16lo7;
360
+ BytePack U16h0,U16h1,U16h2,U16h3,U16h4,U16h5,U16h6,U16h7;
361
+ BytePack U16l0,U16l1,U16l2,U16l3,U16l4,U16l5,U16l6,U16l7;
362
+ BytePack U16s0,U16s1,U16s2,U16s3,U16s4,U16s5,U16s6,U16s7,
363
+ U16s8,U16s9,U16s10,U16s11,U16s12,U16s13,U16s14,U16s15;
364
+
365
+ /*:10*//*12:*/
366
+ #line 354 "libu8u16.w"
367
+
368
+ BitBlock input_select_mask;
369
+
370
+ /*:12*//*13:*/
371
+ #line 365 "libu8u16.w"
372
+
373
+ BitBlock error_mask;
374
+
375
+ /*:13*//*14:*/
376
+ #line 373 "libu8u16.w"
377
+
378
+ BitBlock delmask;
379
+
380
+ /*:14*//*25:*/
381
+ #line 699 "libu8u16.w"
382
+
383
+ intptr_t u8advance,u16advance;
384
+
385
+ /*:25*//*37:*/
386
+ #line 1003 "libu8u16.w"
387
+
388
+ BitBlock u8unibyte,u8prefix,u8suffix,u8prefix2,u8prefix3or4,u8prefix3,u8prefix4;
389
+
390
+ /*:37*//*42:*/
391
+ #line 1046 "libu8u16.w"
392
+
393
+ BitBlock u8scope22,u8scope32,u8scope33,u8scope42,u8scope43,u8scope44;
394
+ BitBlock u8lastsuffix,u8lastbyte,u8surrogate;
395
+
396
+ /*:42*//*46:*/
397
+ #line 1097 "libu8u16.w"
398
+
399
+ BitBlock suffix_required_scope;
400
+
401
+ /*:46*//*59:*/
402
+ #line 1330 "libu8u16.w"
403
+
404
+ #ifdef __GNUC__
405
+ unsigned char u16_bytes_per_reg[16]__attribute__((aligned(16)));
406
+ #endif
407
+ #ifdef _MSC_VER
408
+ __declspec(align(16))unsigned char u16_bytes_per_reg[16];
409
+ #endif
410
+ #if ((DOUBLEBYTE_DELETION == FROM_LEFT8) || (BIT_DELETION == ROTATION_TO_LEFT8))
411
+ BitBlock delcounts_2,delcounts_4,delcounts_8;
412
+ #endif
413
+ #if (BIT_DELETION == ROTATION_TO_LEFT8)
414
+ BitBlock rotl_2,rotl_4,sll_8;
415
+ #endif
416
+
417
+ /*:59*//*80:*/
418
+ #line 1889 "libu8u16.w"
419
+
420
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
421
+ BitBlock bits_per_nybble_tbl=
422
+ (BitBlock){0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};
423
+ #endif
424
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_LEFT8)
425
+ BitBlock packed_identity=
426
+ (BitBlock){0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
427
+ 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
428
+ BitBlock del2_4_shift_tbl=
429
+ (BitBlock){0,0,4,4,0x40,0x40,0x44,0x44,0,0,4,4,0x40,0x40,0x44,0x44};
430
+ BitBlock del4_8_rshift_tbl=
431
+ (BitBlock){0,0xFC,0xFC,0xF8,0,0xFC,0xFC,0xF8,
432
+ 0,0xFC,0xFC,0xF8,0,0xFC,0xFC,0xF8};
433
+ BitBlock del4_8_lshift_tbl=
434
+ (BitBlock){0,0,0,0,4,4,4,4,4,4,4,4,8,8,8,8};
435
+ BitBlock del8_shift_tbl=
436
+ (BitBlock){0,4,4,8,4,8,8,12,4,8,8,12,8,12,12,16};
437
+ BitBlock l8perm0,l8perm1,l8perm2,l8perm3;
438
+ #endif
439
+ #if ((BIT_DELETION != ROTATION_TO_LEFT8) && (DOUBLEBYTE_DELETION == ALTIVEC_FROM_LEFT8))
440
+ BitBlock delcounts_8,u16_bytes_8;
441
+ #endif
442
+
443
+ /*:80*//*86:*/
444
+ #line 2009 "libu8u16.w"
445
+
446
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
447
+ BitBlock start_of_output_existing= vec_ld(0,(vector unsigned char*)*outbuf);
448
+ BitBlock pending= simd_permute(start_of_output_existing,
449
+ start_of_output_existing,
450
+ vec_lvsl(0,(unsigned char*)*outbuf));
451
+ #endif
452
+
453
+
454
+ /*:86*//*91:*/
455
+ #line 2053 "libu8u16.w"
456
+
457
+ #if (BIT_DELETION == SHIFT_TO_RIGHT4)
458
+ BitBlock del4_rshift1,del4_trans2,del4_rshift2;
459
+ #endif
460
+
461
+ /*:91*//*94:*/
462
+ #line 2093 "libu8u16.w"
463
+
464
+ #if (DOUBLEBYTE_DELETION == FROM_LEFT4)
465
+ BitBlock delcounts_2,delcounts_4,u16_bytes_4;
466
+ #endif
467
+
468
+ /*:94*//*100:*/
469
+ #line 2166 "libu8u16.w"
470
+
471
+ #if ((BIT_DELETION == SHIFT_TO_RIGHT8) || (BIT_DELETION == PERMUTE_INDEX_TO_RIGHT8))
472
+ BitBlock del8_rshift1,del8_trans2,del8_rshift2,del8_trans4,del8_rshift4;
473
+ #endif
474
+
475
+ /*:100*/
476
+ #line 264 "libu8u16.w"
477
+
478
+ if(inbuf&&*inbuf&&outbuf&&*outbuf){
479
+ if(/*6:*/
480
+ #line 285 "libu8u16.w"
481
+
482
+ (intptr_t)*outbuf+*outbytesleft> align_ceil((intptr_t)*outbuf+2*(*inbytesleft))
483
+
484
+
485
+
486
+ /*:6*/
487
+ #line 266 "libu8u16.w"
488
+ )
489
+ /*24:*/
490
+ #line 669 "libu8u16.w"
491
+
492
+ {
493
+ unsigned char*U8data= (unsigned char*)*inbuf;
494
+ unsigned char*U16out= (unsigned char*)*outbuf;
495
+ size_t inbytes= *inbytesleft;
496
+ while(inbytes> 0){
497
+ /*36:*/
498
+ #line 921 "libu8u16.w"
499
+
500
+ #ifndef NO_ASCII_OPTIMIZATION
501
+ BitBlock vec_0= simd_const_8(0);
502
+ if(inbytes> PACKSIZE){
503
+ U8s0= sisd_load_unaligned((BytePack*)U8data);
504
+ if(!simd_any_sign_bit_8(U8s0)){
505
+ intptr_t fill_to_align= PACKSIZE-align_offset(U16out);
506
+ U16s0= u16_merge0(vec_0,U8s0);
507
+ sisd_store_unaligned(U16s0,(BytePack*)U16out);
508
+ u8advance= fill_to_align/2;
509
+ u16advance= fill_to_align;
510
+ /*26:*/
511
+ #line 704 "libu8u16.w"
512
+
513
+ inbytes-= u8advance;
514
+ U8data+= u8advance;
515
+ U16out+= u16advance;
516
+
517
+ /*:26*/
518
+ #line 932 "libu8u16.w"
519
+
520
+ while(inbytes> 4*PACKSIZE){
521
+ BytePack*U8pack= (BytePack*)U8data;
522
+ BytePack*U16pack= (BytePack*)U16out;
523
+ U8s0= sisd_load_unaligned(U8pack);
524
+ U8s1= sisd_load_unaligned(&U8pack[1]);
525
+ U8s2= sisd_load_unaligned(&U8pack[2]);
526
+ U8s3= sisd_load_unaligned(&U8pack[3]);
527
+ if(simd_any_sign_bit_8(simd_or(simd_or(U8s0,U8s1),simd_or(U8s2,U8s3))))break;
528
+ sisd_store_aligned(u16_merge0(vec_0,U8s0),U16pack);
529
+ sisd_store_aligned(u16_merge1(vec_0,U8s0),&U16pack[1]);
530
+ sisd_store_aligned(u16_merge0(vec_0,U8s1),&U16pack[2]);
531
+ sisd_store_aligned(u16_merge1(vec_0,U8s1),&U16pack[3]);
532
+ sisd_store_aligned(u16_merge0(vec_0,U8s2),&U16pack[4]);
533
+ sisd_store_aligned(u16_merge1(vec_0,U8s2),&U16pack[5]);
534
+ sisd_store_aligned(u16_merge0(vec_0,U8s3),&U16pack[6]);
535
+ sisd_store_aligned(u16_merge1(vec_0,U8s3),&U16pack[7]);
536
+ u8advance= 4*PACKSIZE;
537
+ u16advance= 8*PACKSIZE;
538
+ /*26:*/
539
+ #line 704 "libu8u16.w"
540
+
541
+ inbytes-= u8advance;
542
+ U8data+= u8advance;
543
+ U16out+= u16advance;
544
+
545
+ /*:26*/
546
+ #line 951 "libu8u16.w"
547
+
548
+ }
549
+ while(inbytes> PACKSIZE){
550
+ BytePack*U16pack= (BytePack*)U16out;
551
+ U8s0= sisd_load_unaligned((BytePack*)U8data);
552
+ if(simd_any_sign_bit_8(U8s0))break;
553
+ sisd_store_aligned(u16_merge0(vec_0,U8s0),U16pack);
554
+ sisd_store_aligned(u16_merge1(vec_0,U8s0),&U16pack[1]);
555
+ u8advance= PACKSIZE;
556
+ u16advance= 2*PACKSIZE;
557
+ /*26:*/
558
+ #line 704 "libu8u16.w"
559
+
560
+ inbytes-= u8advance;
561
+ U8data+= u8advance;
562
+ U16out+= u16advance;
563
+
564
+ /*:26*/
565
+ #line 961 "libu8u16.w"
566
+
567
+ }
568
+ }
569
+ }
570
+ if(inbytes<=PACKSIZE){
571
+ intptr_t U8data_offset= ((intptr_t)U8data)&(PACKSIZE-1);
572
+ if(U8data_offset+inbytes<=PACKSIZE){
573
+
574
+ U8s0= sisd_sbl(sisd_load_aligned((BytePack*)pack_base_addr((intptr_t)U8data)),
575
+ sisd_from_int(8*U8data_offset));
576
+ }
577
+ else U8s0= sisd_load_unaligned((BytePack*)U8data);
578
+ U8s0= simd_and(U8s0,sisd_sbl(simd_const_8(-1),
579
+ sisd_from_int(8*(PACKSIZE-inbytes))));
580
+ if(!simd_any_sign_bit_8(U8s0)){
581
+ sisd_store_unaligned(u16_merge0(vec_0,U8s0),(BytePack*)U16out);
582
+ if(inbytes> PACKSIZE/2)
583
+ sisd_store_unaligned(u16_merge1(vec_0,U8s0),(BytePack*)&U16out[PACKSIZE]);
584
+ u8advance= inbytes;
585
+ u16advance= 2*inbytes;
586
+ /*26:*/
587
+ #line 704 "libu8u16.w"
588
+
589
+ inbytes-= u8advance;
590
+ U8data+= u8advance;
591
+ U16out+= u16advance;
592
+
593
+ /*:26*/
594
+ #line 981 "libu8u16.w"
595
+
596
+ /*29:*/
597
+ #line 763 "libu8u16.w"
598
+
599
+ *outbytesleft-= (intptr_t)U16out-(intptr_t)*outbuf;
600
+ *inbuf= (char*)U8data;
601
+ *inbytesleft= inbytes;
602
+ *outbuf= (char*)U16out;
603
+ /*97:*/
604
+ #line 2123 "libu8u16.w"
605
+
606
+ #if (U8U16_TARGET == MMX_TARGET)
607
+ _mm_empty();
608
+ #endif
609
+
610
+ /*:97*/
611
+ #line 768 "libu8u16.w"
612
+ ;
613
+ if(inbytes==0)return(size_t)0;
614
+ else return(size_t)-1;
615
+
616
+
617
+ /*:29*/
618
+ #line 982 "libu8u16.w"
619
+
620
+ }
621
+ }
622
+ #endif
623
+
624
+
625
+
626
+ /*:36*//*78:*/
627
+ #line 1763 "libu8u16.w"
628
+
629
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
630
+ BitBlock vec_0= simd_const_8(0);
631
+ if(inbytes> PACKSIZE){
632
+ BitBlock r0,r1,r2,r3,r4;
633
+ BitBlock input_shiftl= vec_lvsl(0,U8data);
634
+ U8s0= simd_permute(vec_ld(0,U8data),vec_ld(15,U8data),input_shiftl);
635
+ if(!simd_any_sign_bit_8(U8s0)){
636
+ int fill_to_align= PACKSIZE-align_offset(U16out);
637
+ U16s0= u16_merge0(vec_0,U8s0);
638
+ pending= simd_permute(pending,U16s0,vec_lvsr(0,U16out));
639
+ vec_st(pending,0,U16out);
640
+ u8advance= fill_to_align/2;
641
+ u16advance= fill_to_align;
642
+ /*26:*/
643
+ #line 704 "libu8u16.w"
644
+
645
+ inbytes-= u8advance;
646
+ U8data+= u8advance;
647
+ U16out+= u16advance;
648
+
649
+ /*:26*/
650
+ #line 1777 "libu8u16.w"
651
+
652
+ input_shiftl= vec_lvsl(0,U8data);
653
+ r0= vec_ld(0,U8data);
654
+ while(inbytes> 4*PACKSIZE){
655
+ BytePack*U16pack= (BytePack*)U16out;
656
+ r1= vec_ld(16,U8data);
657
+ r2= vec_ld(32,U8data);
658
+ U8s0= simd_permute(r0,r1,input_shiftl);
659
+ r3= vec_ld(48,U8data);
660
+ U8s1= simd_permute(r1,r2,input_shiftl);
661
+ r4= vec_ld(64,U8data);
662
+ U8s2= simd_permute(r2,r3,input_shiftl);
663
+ U8s3= simd_permute(r3,r4,input_shiftl);
664
+ if(simd_any_sign_bit_8(simd_or(simd_or(U8s0,U8s1),simd_or(U8s2,U8s3))))break;
665
+ sisd_store_aligned(u16_merge0(vec_0,U8s0),U16pack);
666
+ sisd_store_aligned(u16_merge1(vec_0,U8s0),&U16pack[1]);
667
+ sisd_store_aligned(u16_merge0(vec_0,U8s1),&U16pack[2]);
668
+ sisd_store_aligned(u16_merge1(vec_0,U8s1),&U16pack[3]);
669
+ sisd_store_aligned(u16_merge0(vec_0,U8s2),&U16pack[4]);
670
+ sisd_store_aligned(u16_merge1(vec_0,U8s2),&U16pack[5]);
671
+ sisd_store_aligned(u16_merge0(vec_0,U8s3),&U16pack[6]);
672
+ pending= u16_merge1(vec_0,U8s3);
673
+ sisd_store_aligned(pending,&U16pack[7]);
674
+ u8advance= 4*PACKSIZE;
675
+ u16advance= 8*PACKSIZE;
676
+ /*26:*/
677
+ #line 704 "libu8u16.w"
678
+
679
+ inbytes-= u8advance;
680
+ U8data+= u8advance;
681
+ U16out+= u16advance;
682
+
683
+ /*:26*/
684
+ #line 1802 "libu8u16.w"
685
+
686
+ r0= r4;
687
+ }
688
+ while(inbytes> PACKSIZE){
689
+ BytePack*U16pack= (BytePack*)U16out;
690
+ r1= vec_ld(16,U8data);
691
+ U8s0= simd_permute(r0,r1,input_shiftl);
692
+ if(simd_any_sign_bit_8(U8s0))break;
693
+ sisd_store_aligned(u16_merge0(vec_0,U8s0),U16pack);
694
+ pending= u16_merge1(vec_0,U8s0);
695
+ sisd_store_aligned(pending,&U16pack[1]);
696
+ u8advance= PACKSIZE;
697
+ u16advance= 2*PACKSIZE;
698
+ /*26:*/
699
+ #line 704 "libu8u16.w"
700
+
701
+ inbytes-= u8advance;
702
+ U8data+= u8advance;
703
+ U16out+= u16advance;
704
+
705
+ /*:26*/
706
+ #line 1815 "libu8u16.w"
707
+
708
+ r0= r1;
709
+ }
710
+ }
711
+ }
712
+ #endif
713
+
714
+
715
+ /*:78*/
716
+ #line 675 "libu8u16.w"
717
+ ;
718
+ /*31:*/
719
+ #line 776 "libu8u16.w"
720
+
721
+ if(inbytes<BLOCKSIZE){
722
+ input_select_mask= sisd_sbl(simd_const_8(-1),sisd_from_int(BLOCKSIZE-inbytes));
723
+ /*35:*/
724
+ #line 839 "libu8u16.w"
725
+
726
+ #ifdef INBUF_READ_NONALIGNED
727
+ {
728
+ BytePack*U8pack= (BytePack*)U8data;
729
+ size_t full_packs= inbytes/PACKSIZE;
730
+ size_t excess_bytes= inbytes%PACKSIZE;
731
+ intptr_t U8data_offset= ((intptr_t)U8data)%PACKSIZE;
732
+ BytePack partial_pack;
733
+ if(excess_bytes==0)partial_pack= simd_const_8(0);
734
+ else if(U8data_offset+excess_bytes> PACKSIZE)
735
+
736
+ partial_pack= sisd_load_unaligned(&U8pack[full_packs]);
737
+ else{
738
+
739
+ partial_pack= sisd_load_aligned(pack_base_addr(&U8pack[full_packs]));
740
+ partial_pack= sisd_sbl(partial_pack,sisd_from_int(8*U8data_offset));
741
+ }
742
+ switch(full_packs){
743
+ case 0:U8s0= partial_pack;break;
744
+ case 1:U8s0= sisd_load_unaligned(&U8pack[0]);
745
+ U8s1= partial_pack;
746
+ break;
747
+ case 2:U8s0= sisd_load_unaligned(&U8pack[0]);
748
+ U8s1= sisd_load_unaligned(&U8pack[1]);
749
+ U8s2= partial_pack;
750
+ break;
751
+ case 3:U8s0= sisd_load_unaligned(&U8pack[0]);
752
+ U8s1= sisd_load_unaligned(&U8pack[1]);
753
+ U8s2= sisd_load_unaligned(&U8pack[2]);
754
+ U8s3= partial_pack;
755
+ break;
756
+ case 4:U8s0= sisd_load_unaligned(&U8pack[0]);
757
+ U8s1= sisd_load_unaligned(&U8pack[1]);
758
+ U8s2= sisd_load_unaligned(&U8pack[2]);
759
+ U8s3= sisd_load_unaligned(&U8pack[3]);
760
+ U8s4= partial_pack;
761
+ break;
762
+ case 5:U8s0= sisd_load_unaligned(&U8pack[0]);
763
+ U8s1= sisd_load_unaligned(&U8pack[1]);
764
+ U8s2= sisd_load_unaligned(&U8pack[2]);
765
+ U8s3= sisd_load_unaligned(&U8pack[3]);
766
+ U8s4= sisd_load_unaligned(&U8pack[4]);
767
+ U8s5= partial_pack;
768
+ break;
769
+ case 6:U8s0= sisd_load_unaligned(&U8pack[0]);
770
+ U8s1= sisd_load_unaligned(&U8pack[1]);
771
+ U8s2= sisd_load_unaligned(&U8pack[2]);
772
+ U8s3= sisd_load_unaligned(&U8pack[3]);
773
+ U8s4= sisd_load_unaligned(&U8pack[4]);
774
+ U8s5= sisd_load_unaligned(&U8pack[5]);
775
+ U8s6= partial_pack;
776
+ break;
777
+ case 7:U8s0= sisd_load_unaligned(&U8pack[0]);
778
+ U8s1= sisd_load_unaligned(&U8pack[1]);
779
+ U8s2= sisd_load_unaligned(&U8pack[2]);
780
+ U8s3= sisd_load_unaligned(&U8pack[3]);
781
+ U8s4= sisd_load_unaligned(&U8pack[4]);
782
+ U8s5= sisd_load_unaligned(&U8pack[5]);
783
+ U8s6= sisd_load_unaligned(&U8pack[6]);
784
+ U8s7= partial_pack;
785
+ break;
786
+ }
787
+ input_select_mask= sisd_sbl(simd_const_8(-1),sisd_from_int(BLOCKSIZE-inbytes));
788
+ u8advance= inbytes;
789
+ }
790
+ #endif
791
+
792
+
793
+
794
+ /*:35*//*77:*/
795
+ #line 1735 "libu8u16.w"
796
+
797
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
798
+ {
799
+ BitBlock r0,r1,r2,r3,r4,r5,r6,r7,r8;
800
+ BitBlock input_shiftl= vec_lvsl(0,U8data);
801
+ int last_byte= inbytes-1;
802
+ r0= vec_ld(0,U8data);
803
+ r1= vec_ld(min(16,last_byte),U8data);
804
+ r2= vec_ld(min(32,last_byte),U8data);
805
+ U8s0= simd_permute(r0,r1,input_shiftl);
806
+ r3= vec_ld(min(48,last_byte),U8data);
807
+ U8s1= simd_permute(r1,r2,input_shiftl);
808
+ r4= vec_ld(min(64,last_byte),U8data);
809
+ U8s2= simd_permute(r2,r3,input_shiftl);
810
+ r5= vec_ld(min(80,last_byte),U8data);
811
+ U8s3= simd_permute(r3,r4,input_shiftl);
812
+ r6= vec_ld(min(96,last_byte),U8data);
813
+ U8s4= simd_permute(r4,r5,input_shiftl);
814
+ r7= vec_ld(min(112,last_byte),U8data);
815
+ U8s5= simd_permute(r5,r6,input_shiftl);
816
+ r8= vec_ld(min(127,last_byte),U8data);
817
+ U8s6= simd_permute(r6,r7,input_shiftl);
818
+ U8s7= simd_permute(r7,r8,input_shiftl);
819
+ u8advance= inbytes;
820
+ }
821
+ #endif
822
+
823
+ /*:77*/
824
+ #line 779 "libu8u16.w"
825
+
826
+ }
827
+ else{
828
+ input_select_mask= simd_const_8(-1);
829
+ /*32:*/
830
+ #line 790 "libu8u16.w"
831
+
832
+ #ifdef INBUF_READ_NONALIGNED
833
+ {
834
+ BytePack*U8pack= (BytePack*)U8data;
835
+ U8s0= sisd_load_unaligned(&U8pack[0]);
836
+ U8s1= sisd_load_unaligned(&U8pack[1]);
837
+ U8s2= sisd_load_unaligned(&U8pack[2]);
838
+ U8s3= sisd_load_unaligned(&U8pack[3]);
839
+ U8s4= sisd_load_unaligned(&U8pack[4]);
840
+ U8s5= sisd_load_unaligned(&U8pack[5]);
841
+ U8s6= sisd_load_unaligned(&U8pack[6]);
842
+ U8s7= sisd_load_unaligned(&U8pack[7]);
843
+ u8advance= BLOCKSIZE;
844
+ /*33:*/
845
+ #line 822 "libu8u16.w"
846
+
847
+ u8advance-= is_prefix_byte(U8data[u8advance-1])
848
+ +2*is_prefix3or4_byte(U8data[u8advance-2])
849
+ +3*is_prefix4_byte(U8data[u8advance-3]);
850
+
851
+
852
+
853
+ /*:33*/
854
+ #line 803 "libu8u16.w"
855
+
856
+ }
857
+ #endif
858
+
859
+ /*:32*//*76:*/
860
+ #line 1700 "libu8u16.w"
861
+
862
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
863
+ {
864
+ BitBlock r0,r1,r2,r3,r4,r5,r6,r7,r8;
865
+ BitBlock input_shiftl= vec_lvsl(0,U8data);
866
+ r0= vec_ld(0,U8data);
867
+ r1= vec_ld(16,U8data);
868
+ r2= vec_ld(32,U8data);
869
+ U8s0= simd_permute(r0,r1,input_shiftl);
870
+ r3= vec_ld(48,U8data);
871
+ U8s1= simd_permute(r1,r2,input_shiftl);
872
+ r4= vec_ld(64,U8data);
873
+ U8s2= simd_permute(r2,r3,input_shiftl);
874
+ r5= vec_ld(80,U8data);
875
+ U8s3= simd_permute(r3,r4,input_shiftl);
876
+ r6= vec_ld(96,U8data);
877
+ U8s4= simd_permute(r4,r5,input_shiftl);
878
+ r7= vec_ld(112,U8data);
879
+ U8s5= simd_permute(r5,r6,input_shiftl);
880
+
881
+ r8= vec_ld(127,U8data);
882
+ U8s6= simd_permute(r6,r7,input_shiftl);
883
+ U8s7= simd_permute(r7,r8,input_shiftl);
884
+ u8advance= BLOCKSIZE;
885
+ /*33:*/
886
+ #line 822 "libu8u16.w"
887
+
888
+ u8advance-= is_prefix_byte(U8data[u8advance-1])
889
+ +2*is_prefix3or4_byte(U8data[u8advance-2])
890
+ +3*is_prefix4_byte(U8data[u8advance-3]);
891
+
892
+
893
+
894
+ /*:33*/
895
+ #line 1724 "libu8u16.w"
896
+
897
+ }
898
+ #endif
899
+
900
+
901
+ /*:76*/
902
+ #line 783 "libu8u16.w"
903
+
904
+ }
905
+
906
+
907
+ /*:31*/
908
+ #line 676 "libu8u16.w"
909
+
910
+ /*19:*/
911
+ #line 510 "libu8u16.w"
912
+
913
+ #if (S2P_ALGORITHM == S2P_IDEAL)
914
+ #if (BYTE_ORDER == BIG_ENDIAN)
915
+ s2p_ideal(U8s0,U8s1,U8s2,U8s3,U8s4,U8s5,U8s6,U8s7,
916
+ u8bit0,u8bit1,u8bit2,u8bit3,u8bit4,u8bit5,u8bit6,u8bit7)
917
+ #endif
918
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
919
+ s2p_ideal(U8s7,U8s6,U8s5,U8s4,U8s3,U8s2,U8s1,U8s0,
920
+ u8bit0,u8bit1,u8bit2,u8bit3,u8bit4,u8bit5,u8bit6,u8bit7)
921
+ #endif
922
+ #endif
923
+
924
+ /*:19*//*70:*/
925
+ #line 1572 "libu8u16.w"
926
+
927
+ #if (S2P_ALGORITHM == S2P_BYTEPACK)
928
+ {
929
+ BitBlock mask_2= simd_himask_2;
930
+ BitBlock mask_4= simd_himask_4;
931
+ BitBlock mask_8= simd_himask_8;
932
+ #if (BYTE_ORDER == BIG_ENDIAN)
933
+ s2p_bytepack(U8s0,U8s1,U8s2,U8s3,U8s4,U8s5,U8s6,U8s7,
934
+ u8bit0,u8bit1,u8bit2,u8bit3,u8bit4,u8bit5,u8bit6,u8bit7)
935
+ #endif
936
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
937
+ s2p_bytepack(U8s7,U8s6,U8s5,U8s4,U8s3,U8s2,U8s1,U8s0,
938
+ u8bit0,u8bit1,u8bit2,u8bit3,u8bit4,u8bit5,u8bit6,u8bit7)
939
+ #endif
940
+ }
941
+ #endif
942
+
943
+
944
+ /*:70*/
945
+ #line 677 "libu8u16.w"
946
+
947
+ /*28:*/
948
+ #line 726 "libu8u16.w"
949
+
950
+ /*38:*/
951
+ #line 1011 "libu8u16.w"
952
+
953
+ {
954
+ BitBlock bit0_selected= simd_and(input_select_mask,u8bit0);
955
+ u8unibyte= simd_andc(input_select_mask,u8bit0);
956
+ u8prefix= simd_and(bit0_selected,u8bit1);
957
+ u8suffix= simd_andc(bit0_selected,u8bit1);
958
+ u8prefix3or4= simd_and(u8prefix,u8bit2);
959
+ u8prefix2= simd_andc(u8prefix,u8bit2);
960
+ u8prefix3= simd_andc(u8prefix3or4,u8bit3);
961
+ u8prefix4= simd_and(u8prefix3or4,u8bit3);
962
+ }
963
+
964
+ /*:38*/
965
+ #line 727 "libu8u16.w"
966
+
967
+ /*43:*/
968
+ #line 1053 "libu8u16.w"
969
+
970
+ u8scope22= bitblock_sfli(u8prefix2,1);
971
+ u8scope33= bitblock_sfli(u8prefix3,2);
972
+ u8scope44= bitblock_sfli(u8prefix4,3);
973
+ u8lastsuffix= simd_or(simd_or(u8scope22,u8scope33),u8scope44);
974
+ u8lastbyte= simd_or(u8unibyte,u8lastsuffix);
975
+
976
+ /*:43*/
977
+ #line 728 "libu8u16.w"
978
+
979
+ /*47:*/
980
+ #line 1110 "libu8u16.w"
981
+
982
+ error_mask= simd_andc(u8prefix2,simd_or(simd_or(u8bit3,u8bit4),
983
+ simd_or(u8bit5,u8bit6)));
984
+ suffix_required_scope= u8scope22;
985
+
986
+ /*:47*/
987
+ #line 729 "libu8u16.w"
988
+
989
+ /*52:*/
990
+ #line 1185 "libu8u16.w"
991
+
992
+ u16hi5= simd_and(u8lastsuffix,bitblock_sfli(u8bit3,1));
993
+ u16hi6= simd_and(u8lastsuffix,bitblock_sfli(u8bit4,1));
994
+ u16hi7= simd_and(u8lastsuffix,bitblock_sfli(u8bit5,1));
995
+ u16lo0= simd_and(u8lastsuffix,bitblock_sfli(u8bit6,1));
996
+ u16lo1= simd_or(simd_and(u8unibyte,u8bit1),simd_and(u8lastsuffix,bitblock_sfli(u8bit7,1)));
997
+ u16lo2= simd_and(u8lastbyte,u8bit2);
998
+ u16lo3= simd_and(u8lastbyte,u8bit3);
999
+ u16lo4= simd_and(u8lastbyte,u8bit4);
1000
+ u16lo5= simd_and(u8lastbyte,u8bit5);
1001
+ u16lo6= simd_and(u8lastbyte,u8bit6);
1002
+ u16lo7= simd_and(u8lastbyte,u8bit7);
1003
+
1004
+ /*:52*/
1005
+ #line 730 "libu8u16.w"
1006
+
1007
+ /*55:*/
1008
+ #line 1262 "libu8u16.w"
1009
+
1010
+ delmask= simd_not(simd_and(input_select_mask,u8lastbyte));
1011
+
1012
+ /*:55*/
1013
+ #line 731 "libu8u16.w"
1014
+
1015
+ #ifndef NO_OPTIMIZATION
1016
+ if(/*39:*/
1017
+ #line 1027 "libu8u16.w"
1018
+
1019
+ bitblock_has_bit(u8prefix3or4)
1020
+
1021
+ /*:39*/
1022
+ #line 733 "libu8u16.w"
1023
+ ){
1024
+ /*44:*/
1025
+ #line 1063 "libu8u16.w"
1026
+
1027
+ u8scope32= bitblock_sfli(u8prefix3,1);
1028
+
1029
+ /*:44*/
1030
+ #line 734 "libu8u16.w"
1031
+
1032
+ /*48:*/
1033
+ #line 1120 "libu8u16.w"
1034
+
1035
+ {
1036
+ BitBlock prefix_E0ED,E0ED_constraint;
1037
+ prefix_E0ED= simd_andc(u8prefix3,
1038
+ simd_or(simd_or(u8bit6,simd_xor(u8bit4,u8bit7)),
1039
+ simd_xor(u8bit4,u8bit5)));
1040
+ E0ED_constraint= simd_xor(bitblock_sfli(u8bit5,1),u8bit2);
1041
+ error_mask= simd_or(error_mask,
1042
+ simd_andc(bitblock_sfli(prefix_E0ED,1),E0ED_constraint));
1043
+ suffix_required_scope= simd_or(u8lastsuffix,u8scope32);
1044
+ }
1045
+
1046
+ /*:48*/
1047
+ #line 735 "libu8u16.w"
1048
+
1049
+ /*53:*/
1050
+ #line 1202 "libu8u16.w"
1051
+
1052
+ u16hi0= simd_and(u8scope33,bitblock_sfli(u8bit4,2));
1053
+ u16hi1= simd_and(u8scope33,bitblock_sfli(u8bit5,2));
1054
+ u16hi2= simd_and(u8scope33,bitblock_sfli(u8bit6,2));
1055
+ u16hi3= simd_and(u8scope33,bitblock_sfli(u8bit7,2));
1056
+ u16hi4= simd_and(u8scope33,bitblock_sfli(u8bit2,1));
1057
+
1058
+ /*:53*/
1059
+ #line 736 "libu8u16.w"
1060
+
1061
+ if(/*40:*/
1062
+ #line 1034 "libu8u16.w"
1063
+
1064
+ bitblock_has_bit(u8prefix4)
1065
+
1066
+ /*:40*/
1067
+ #line 737 "libu8u16.w"
1068
+ ){
1069
+ /*45:*/
1070
+ #line 1068 "libu8u16.w"
1071
+
1072
+ u8scope42= bitblock_sfli(u8prefix4,1);
1073
+ u8scope43= bitblock_sfli(u8prefix4,2);
1074
+ u8surrogate= simd_or(u8scope42,u8scope44);
1075
+
1076
+
1077
+
1078
+ /*:45*/
1079
+ #line 738 "libu8u16.w"
1080
+
1081
+ /*49:*/
1082
+ #line 1137 "libu8u16.w"
1083
+
1084
+ {
1085
+ BitBlock prefix_F5FF,prefix_F0F4,F0F4_constraint;
1086
+ prefix_F5FF= simd_and(u8prefix4,simd_or(u8bit4,
1087
+ simd_and(u8bit5,
1088
+ simd_or(u8bit6,u8bit7))));
1089
+ error_mask= simd_or(error_mask,prefix_F5FF);
1090
+ prefix_F0F4= simd_andc(u8prefix4,simd_or(u8bit4,simd_or(u8bit6,u8bit7)));
1091
+ F0F4_constraint= simd_xor(bitblock_sfli(u8bit5,1),simd_or(u8bit2,u8bit3));
1092
+ error_mask= simd_or(error_mask,simd_andc(bitblock_sfli(prefix_F0F4,1),F0F4_constraint));
1093
+ suffix_required_scope= simd_or(suffix_required_scope,
1094
+ simd_or(u8surrogate,u8scope43));
1095
+ }
1096
+
1097
+ /*:49*/
1098
+ #line 739 "libu8u16.w"
1099
+
1100
+ /*54:*/
1101
+ #line 1221 "libu8u16.w"
1102
+
1103
+ {BitBlock borrow1,borrow2;
1104
+ u16hi0= simd_or(u16hi0,u8surrogate);
1105
+ u16hi1= simd_or(u16hi1,u8surrogate);
1106
+ u16hi3= simd_or(u16hi3,u8surrogate);
1107
+ u16hi4= simd_or(u16hi4,u8surrogate);
1108
+ u16hi5= simd_or(u16hi5,u8scope44);
1109
+ u16lo1= simd_or(u16lo1,simd_and(u8scope42,simd_not(u8bit3)));
1110
+
1111
+ u16lo0= simd_or(u16lo0,simd_and(u8scope42,simd_xor(u8bit2,u16lo1)));
1112
+ borrow1= simd_andc(u16lo1,u8bit2);
1113
+ u16hi7= simd_or(u16hi7,simd_and(u8scope42,simd_xor(bitblock_sfli(u8bit7,1),borrow1)));
1114
+ borrow2= simd_andc(borrow1,bitblock_sfli(u8bit7,1));
1115
+ u16hi6= simd_or(u16hi6,simd_and(u8scope42,simd_xor(bitblock_sfli(u8bit6,1),borrow2)));
1116
+ u16lo2= simd_or(u16lo2,simd_and(u8scope42,u8bit4));
1117
+ u16lo3= simd_or(u16lo3,simd_and(u8scope42,u8bit5));
1118
+ u16lo4= simd_or(u16lo4,simd_and(u8scope42,u8bit6));
1119
+ u16lo5= simd_or(u16lo5,simd_and(u8scope42,u8bit7));
1120
+ u16lo6= simd_or(u16lo6,simd_and(u8scope42,bitblock_sbli(u8bit2,1)));
1121
+ u16lo7= simd_or(u16lo7,simd_and(u8scope42,bitblock_sbli(u8bit3,1)));
1122
+ }
1123
+
1124
+
1125
+ /*:54*/
1126
+ #line 740 "libu8u16.w"
1127
+
1128
+ /*56:*/
1129
+ #line 1270 "libu8u16.w"
1130
+
1131
+ {BitBlock scope42_selected= bitblock_sbli(simd_and(u8scope44,input_select_mask),2);
1132
+ delmask= simd_not(simd_and(input_select_mask,
1133
+ simd_or(u8lastbyte,scope42_selected)));
1134
+ }
1135
+
1136
+ /*:56*/
1137
+ #line 741 "libu8u16.w"
1138
+
1139
+ }
1140
+ }
1141
+ #endif
1142
+ #ifdef NO_OPTIMIZATION
1143
+ /*44:*/
1144
+ #line 1063 "libu8u16.w"
1145
+
1146
+ u8scope32= bitblock_sfli(u8prefix3,1);
1147
+
1148
+ /*:44*/
1149
+ #line 746 "libu8u16.w"
1150
+
1151
+ /*48:*/
1152
+ #line 1120 "libu8u16.w"
1153
+
1154
+ {
1155
+ BitBlock prefix_E0ED,E0ED_constraint;
1156
+ prefix_E0ED= simd_andc(u8prefix3,
1157
+ simd_or(simd_or(u8bit6,simd_xor(u8bit4,u8bit7)),
1158
+ simd_xor(u8bit4,u8bit5)));
1159
+ E0ED_constraint= simd_xor(bitblock_sfli(u8bit5,1),u8bit2);
1160
+ error_mask= simd_or(error_mask,
1161
+ simd_andc(bitblock_sfli(prefix_E0ED,1),E0ED_constraint));
1162
+ suffix_required_scope= simd_or(u8lastsuffix,u8scope32);
1163
+ }
1164
+
1165
+ /*:48*/
1166
+ #line 747 "libu8u16.w"
1167
+
1168
+ /*53:*/
1169
+ #line 1202 "libu8u16.w"
1170
+
1171
+ u16hi0= simd_and(u8scope33,bitblock_sfli(u8bit4,2));
1172
+ u16hi1= simd_and(u8scope33,bitblock_sfli(u8bit5,2));
1173
+ u16hi2= simd_and(u8scope33,bitblock_sfli(u8bit6,2));
1174
+ u16hi3= simd_and(u8scope33,bitblock_sfli(u8bit7,2));
1175
+ u16hi4= simd_and(u8scope33,bitblock_sfli(u8bit2,1));
1176
+
1177
+ /*:53*/
1178
+ #line 748 "libu8u16.w"
1179
+
1180
+ /*45:*/
1181
+ #line 1068 "libu8u16.w"
1182
+
1183
+ u8scope42= bitblock_sfli(u8prefix4,1);
1184
+ u8scope43= bitblock_sfli(u8prefix4,2);
1185
+ u8surrogate= simd_or(u8scope42,u8scope44);
1186
+
1187
+
1188
+
1189
+ /*:45*/
1190
+ #line 749 "libu8u16.w"
1191
+
1192
+ /*49:*/
1193
+ #line 1137 "libu8u16.w"
1194
+
1195
+ {
1196
+ BitBlock prefix_F5FF,prefix_F0F4,F0F4_constraint;
1197
+ prefix_F5FF= simd_and(u8prefix4,simd_or(u8bit4,
1198
+ simd_and(u8bit5,
1199
+ simd_or(u8bit6,u8bit7))));
1200
+ error_mask= simd_or(error_mask,prefix_F5FF);
1201
+ prefix_F0F4= simd_andc(u8prefix4,simd_or(u8bit4,simd_or(u8bit6,u8bit7)));
1202
+ F0F4_constraint= simd_xor(bitblock_sfli(u8bit5,1),simd_or(u8bit2,u8bit3));
1203
+ error_mask= simd_or(error_mask,simd_andc(bitblock_sfli(prefix_F0F4,1),F0F4_constraint));
1204
+ suffix_required_scope= simd_or(suffix_required_scope,
1205
+ simd_or(u8surrogate,u8scope43));
1206
+ }
1207
+
1208
+ /*:49*/
1209
+ #line 750 "libu8u16.w"
1210
+
1211
+ /*54:*/
1212
+ #line 1221 "libu8u16.w"
1213
+
1214
+ {BitBlock borrow1,borrow2;
1215
+ u16hi0= simd_or(u16hi0,u8surrogate);
1216
+ u16hi1= simd_or(u16hi1,u8surrogate);
1217
+ u16hi3= simd_or(u16hi3,u8surrogate);
1218
+ u16hi4= simd_or(u16hi4,u8surrogate);
1219
+ u16hi5= simd_or(u16hi5,u8scope44);
1220
+ u16lo1= simd_or(u16lo1,simd_and(u8scope42,simd_not(u8bit3)));
1221
+
1222
+ u16lo0= simd_or(u16lo0,simd_and(u8scope42,simd_xor(u8bit2,u16lo1)));
1223
+ borrow1= simd_andc(u16lo1,u8bit2);
1224
+ u16hi7= simd_or(u16hi7,simd_and(u8scope42,simd_xor(bitblock_sfli(u8bit7,1),borrow1)));
1225
+ borrow2= simd_andc(borrow1,bitblock_sfli(u8bit7,1));
1226
+ u16hi6= simd_or(u16hi6,simd_and(u8scope42,simd_xor(bitblock_sfli(u8bit6,1),borrow2)));
1227
+ u16lo2= simd_or(u16lo2,simd_and(u8scope42,u8bit4));
1228
+ u16lo3= simd_or(u16lo3,simd_and(u8scope42,u8bit5));
1229
+ u16lo4= simd_or(u16lo4,simd_and(u8scope42,u8bit6));
1230
+ u16lo5= simd_or(u16lo5,simd_and(u8scope42,u8bit7));
1231
+ u16lo6= simd_or(u16lo6,simd_and(u8scope42,bitblock_sbli(u8bit2,1)));
1232
+ u16lo7= simd_or(u16lo7,simd_and(u8scope42,bitblock_sbli(u8bit3,1)));
1233
+ }
1234
+
1235
+
1236
+ /*:54*/
1237
+ #line 751 "libu8u16.w"
1238
+
1239
+ /*56:*/
1240
+ #line 1270 "libu8u16.w"
1241
+
1242
+ {BitBlock scope42_selected= bitblock_sbli(simd_and(u8scope44,input_select_mask),2);
1243
+ delmask= simd_not(simd_and(input_select_mask,
1244
+ simd_or(u8lastbyte,scope42_selected)));
1245
+ }
1246
+
1247
+ /*:56*/
1248
+ #line 752 "libu8u16.w"
1249
+
1250
+ #endif
1251
+
1252
+ /*50:*/
1253
+ #line 1154 "libu8u16.w"
1254
+
1255
+ error_mask= simd_or(error_mask,simd_xor(suffix_required_scope,u8suffix));
1256
+
1257
+ /*:50*/
1258
+ #line 755 "libu8u16.w"
1259
+
1260
+
1261
+
1262
+ /*:28*/
1263
+ #line 678 "libu8u16.w"
1264
+
1265
+ /*57:*/
1266
+ #line 1304 "libu8u16.w"
1267
+
1268
+ /*60:*/
1269
+ #line 1344 "libu8u16.w"
1270
+
1271
+ #if ((DOUBLEBYTE_DELETION == FROM_LEFT8) || (BIT_DELETION == ROTATION_TO_LEFT8))
1272
+ delcounts_2= simd_add_2_lh(delmask,delmask);
1273
+ delcounts_4= simd_add_4_lh(delcounts_2,delcounts_2);
1274
+ delcounts_8= simd_add_8_lh(delcounts_4,delcounts_4);
1275
+ sisd_store_aligned(simd_slli_8(simd_sub_8(simd_const_8(8),delcounts_8),1),
1276
+ (BytePack*)&u16_bytes_per_reg[0]);
1277
+ #endif
1278
+ #if (BIT_DELETION == ROTATION_TO_LEFT8)
1279
+ rotl_2= simd_if(simd_himask_4,delmask,sisd_srli(delmask,1));
1280
+ rotl_4= simd_if(simd_himask_8,simd_sub_2(vec_0,delcounts_2),sisd_srli(delcounts_2,2));
1281
+ sll_8= sisd_srli(delcounts_4,4);
1282
+ #endif
1283
+
1284
+ /*:60*//*79:*/
1285
+ #line 1844 "libu8u16.w"
1286
+
1287
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_LEFT8)
1288
+ {
1289
+ BitBlock d0,d1,q0,q1,p0,p1;
1290
+ BitBlock delmask_hi4= simd_srli_8(delmask,4);
1291
+
1292
+ d0= simd_permute(del2_4_shift_tbl,del2_4_shift_tbl,delmask_hi4);
1293
+ d1= simd_permute(del2_4_shift_tbl,del2_4_shift_tbl,delmask);
1294
+ q0= simd_mergeh_8(d0,d1);
1295
+ q1= simd_mergel_8(d0,d1);
1296
+ p0= simd_srli_8(q0,4);
1297
+ p1= simd_srli_8(q1,4);
1298
+ l8perm0= simd_rotl_8(packed_identity,simd_mergeh_8(p0,q0));
1299
+ l8perm1= simd_rotl_8(packed_identity,simd_mergel_8(p0,q0));
1300
+ l8perm2= simd_rotl_8(packed_identity,simd_mergeh_8(p1,q1));
1301
+ l8perm3= simd_rotl_8(packed_identity,simd_mergel_8(p1,q1));
1302
+
1303
+ d0= simd_permute(del4_8_rshift_tbl,del4_8_rshift_tbl,delmask_hi4);
1304
+ d1= simd_permute(del4_8_lshift_tbl,del4_8_lshift_tbl,delmask);
1305
+ p0= simd_mergeh_8(d0,d1);
1306
+ p1= simd_mergel_8(d0,d1);
1307
+ l8perm0= simd_rotl_16(l8perm0,simd_mergeh_8(simd_const_8(0),p0));
1308
+ l8perm1= simd_rotl_16(l8perm1,simd_mergel_8(simd_const_8(0),p0));
1309
+ l8perm2= simd_rotl_16(l8perm2,simd_mergeh_8(simd_const_8(0),p1));
1310
+ l8perm3= simd_rotl_16(l8perm3,simd_mergel_8(simd_const_8(0),p1));
1311
+
1312
+ d0= simd_permute(del8_shift_tbl,del8_shift_tbl,delmask_hi4);
1313
+ p0= simd_mergeh_8(simd_const_8(0),d0);
1314
+ p1= simd_mergel_8(simd_const_8(0),d0);
1315
+ l8perm0= simd_rotl_32(l8perm0,simd_mergeh_8(simd_const_8(0),p0));
1316
+ l8perm1= simd_rotl_32(l8perm1,simd_mergel_8(simd_const_8(0),p0));
1317
+ l8perm2= simd_rotl_32(l8perm2,simd_mergeh_8(simd_const_8(0),p1));
1318
+ l8perm3= simd_rotl_32(l8perm3,simd_mergel_8(simd_const_8(0),p1));
1319
+ }
1320
+ #endif
1321
+ #if (DOUBLEBYTE_DELETION == ALTIVEC_FROM_LEFT8)
1322
+ {
1323
+ BitBlock delmask_hi4= simd_srli_8(delmask,4);
1324
+ delcounts_8= simd_add_8(simd_permute(bits_per_nybble_tbl,bits_per_nybble_tbl,delmask_hi4),
1325
+ simd_permute(bits_per_nybble_tbl,bits_per_nybble_tbl,delmask));
1326
+ u16_bytes_8= simd_slli_8(simd_sub_8(simd_const_8(8),delcounts_8),1);
1327
+ }
1328
+ #endif
1329
+
1330
+ /*:79*//*90:*/
1331
+ #line 2037 "libu8u16.w"
1332
+
1333
+ #if (BIT_DELETION == SHIFT_TO_RIGHT4)
1334
+ del4_rshift1= simd_xor(simd_slli_4(delmask,1),simd_slli_4(delmask,2));
1335
+ del4_rshift1= simd_xor(del4_rshift1,simd_slli_4(del4_rshift1,2));
1336
+
1337
+ del4_trans2= simd_and(del4_rshift1,delmask);
1338
+
1339
+ del4_rshift2= simd_xor(simd_slli_4(del4_trans2,1),simd_slli_4(del4_trans2,2));
1340
+ del4_rshift2= simd_xor(del4_rshift2,simd_slli_4(del4_rshift2,2));
1341
+
1342
+ del4_rshift1= simd_andc(del4_rshift1,delmask);
1343
+ del4_rshift2= simd_andc(del4_rshift2,delmask);
1344
+
1345
+ del4_rshift2= simd_add_4(simd_and(del4_rshift1,del4_rshift2),del4_rshift2);
1346
+ #endif
1347
+
1348
+ /*:90*//*95:*/
1349
+ #line 2098 "libu8u16.w"
1350
+
1351
+ #if (DOUBLEBYTE_DELETION == FROM_LEFT4)
1352
+ delcounts_2= simd_add_2_lh(delmask,delmask);
1353
+ delcounts_4= simd_add_4_lh(delcounts_2,delcounts_2);
1354
+ u16_bytes_4= sisd_slli(simd_sub_8(simd_const_4(4),delcounts_4),1);
1355
+
1356
+ #if BYTE_ORDER == BIG_ENDIAN
1357
+ sisd_store_aligned(simd_mergeh_4(simd_const_4(0),u16_bytes_4),
1358
+ &u16_bytes_per_reg[0]);
1359
+ sisd_store_aligned(simd_mergel_4(simd_const_4(0),u16_bytes_4),
1360
+ &u16_bytes_per_reg[8]);
1361
+ #endif
1362
+ #if BYTE_ORDER == LITTLE_ENDIAN
1363
+ sisd_store_aligned(simd_mergel_4(simd_const_4(0),u16_bytes_4),
1364
+ &u16_bytes_per_reg[0]);
1365
+ sisd_store_aligned(simd_mergeh_4(simd_const_4(0),u16_bytes_4),
1366
+ &u16_bytes_per_reg[8]);
1367
+ #endif
1368
+ #endif
1369
+
1370
+ /*:95*//*99:*/
1371
+ #line 2138 "libu8u16.w"
1372
+
1373
+ #if ((BIT_DELETION == SHIFT_TO_RIGHT8) || (BIT_DELETION == PERMUTE_INDEX_TO_RIGHT8))
1374
+ del8_rshift1= simd_xor(simd_slli_8(delmask,1),simd_slli_8(delmask,2));
1375
+ del8_rshift1= simd_xor(del8_rshift1,simd_slli_8(del8_rshift1,2));
1376
+ del8_rshift1= simd_xor(del8_rshift1,simd_slli_8(del8_rshift1,4));
1377
+
1378
+ del8_trans2= simd_and(del8_rshift1,delmask);
1379
+
1380
+ del8_rshift2= simd_xor(simd_slli_8(del8_trans2,1),simd_slli_8(del8_trans2,2));
1381
+ del8_rshift2= simd_xor(del8_rshift2,simd_slli_8(del8_rshift2,2));
1382
+ del8_rshift2= simd_xor(del8_rshift2,simd_slli_8(del8_rshift2,4));
1383
+
1384
+ del8_trans4= simd_and(del8_rshift2,del8_trans2);
1385
+ del8_rshift4= simd_xor(simd_slli_8(del8_trans4,1),simd_slli_8(del8_trans4,2));
1386
+ del8_rshift4= simd_xor(del8_rshift4,simd_slli_8(del8_rshift4,2));
1387
+ del8_rshift4= simd_xor(del8_rshift4,simd_slli_8(del8_rshift4,4));
1388
+
1389
+ del8_rshift1= simd_andc(del8_rshift1,delmask);
1390
+ del8_rshift2= simd_andc(del8_rshift2,delmask);
1391
+ del8_rshift4= simd_andc(del8_rshift4,delmask);
1392
+
1393
+ del8_rshift2= simd_sub_8(del8_rshift2,simd_srli_16(simd_and(del8_rshift1,del8_rshift2),1));
1394
+
1395
+ del8_rshift4= simd_sub_8(del8_rshift4,simd_srli_16(simd_and(del8_rshift1,del8_rshift4),1));
1396
+ {BitBlock shift_bits= simd_and(del8_rshift2,del8_rshift4);
1397
+ del8_rshift4= simd_or(simd_srli_16(shift_bits,2),simd_xor(del8_rshift4,shift_bits));}
1398
+ #endif
1399
+
1400
+ /*:99*/
1401
+ #line 1305 "libu8u16.w"
1402
+
1403
+ /*63:*/
1404
+ #line 1372 "libu8u16.w"
1405
+
1406
+ #if (BIT_DELETION == ROTATION_TO_LEFT8)
1407
+ u16hi5= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi5,rotl_2),rotl_4),sll_8);
1408
+ u16hi6= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi6,rotl_2),rotl_4),sll_8);
1409
+ u16hi7= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi7,rotl_2),rotl_4),sll_8);
1410
+ u16lo0= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo0,rotl_2),rotl_4),sll_8);
1411
+ u16lo1= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo1,rotl_2),rotl_4),sll_8);
1412
+ u16lo2= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo2,rotl_2),rotl_4),sll_8);
1413
+ u16lo3= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo3,rotl_2),rotl_4),sll_8);
1414
+ u16lo4= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo4,rotl_2),rotl_4),sll_8);
1415
+ u16lo5= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo5,rotl_2),rotl_4),sll_8);
1416
+ u16lo6= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo6,rotl_2),rotl_4),sll_8);
1417
+ u16lo7= simd_sll_8(simd_rotl_4(simd_rotl_2(u16lo7,rotl_2),rotl_4),sll_8);
1418
+ #endif
1419
+
1420
+
1421
+
1422
+ /*:63*//*82:*/
1423
+ #line 1919 "libu8u16.w"
1424
+
1425
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_LEFT8)
1426
+ {
1427
+ }
1428
+ #endif
1429
+
1430
+ /*:82*//*93:*/
1431
+ #line 2078 "libu8u16.w"
1432
+
1433
+ #if (BIT_DELETION == SHIFT_TO_RIGHT4)
1434
+ do_right4_shifts(u16hi5,del4_rshift1,del4_rshift2)
1435
+ do_right4_shifts(u16hi6,del4_rshift1,del4_rshift2)
1436
+ do_right4_shifts(u16hi7,del4_rshift1,del4_rshift2)
1437
+ do_right4_shifts(u16lo0,del4_rshift1,del4_rshift2)
1438
+ do_right4_shifts(u16lo1,del4_rshift1,del4_rshift2)
1439
+ do_right4_shifts(u16lo2,del4_rshift1,del4_rshift2)
1440
+ do_right4_shifts(u16lo3,del4_rshift1,del4_rshift2)
1441
+ do_right4_shifts(u16lo4,del4_rshift1,del4_rshift2)
1442
+ do_right4_shifts(u16lo5,del4_rshift1,del4_rshift2)
1443
+ do_right4_shifts(u16lo6,del4_rshift1,del4_rshift2)
1444
+ do_right4_shifts(u16lo7,del4_rshift1,del4_rshift2)
1445
+ #endif
1446
+
1447
+ /*:93*//*102:*/
1448
+ #line 2192 "libu8u16.w"
1449
+
1450
+ #if (BIT_DELETION == SHIFT_TO_RIGHT8)
1451
+ do_right8_shifts(u16hi5,del8_rshift1,del8_rshift2,del8_rshift4)
1452
+ do_right8_shifts(u16hi6,del8_rshift1,del8_rshift2,del8_rshift4)
1453
+ do_right8_shifts(u16hi7,del8_rshift1,del8_rshift2,del8_rshift4)
1454
+ do_right8_shifts(u16lo0,del8_rshift1,del8_rshift2,del8_rshift4)
1455
+ do_right8_shifts(u16lo1,del8_rshift1,del8_rshift2,del8_rshift4)
1456
+ do_right8_shifts(u16lo2,del8_rshift1,del8_rshift2,del8_rshift4)
1457
+ do_right8_shifts(u16lo3,del8_rshift1,del8_rshift2,del8_rshift4)
1458
+ do_right8_shifts(u16lo4,del8_rshift1,del8_rshift2,del8_rshift4)
1459
+ do_right8_shifts(u16lo5,del8_rshift1,del8_rshift2,del8_rshift4)
1460
+ do_right8_shifts(u16lo6,del8_rshift1,del8_rshift2,del8_rshift4)
1461
+ do_right8_shifts(u16lo7,del8_rshift1,del8_rshift2,del8_rshift4)
1462
+ #endif
1463
+
1464
+
1465
+
1466
+ /*:102*/
1467
+ #line 1306 "libu8u16.w"
1468
+
1469
+ if(!/*39:*/
1470
+ #line 1027 "libu8u16.w"
1471
+
1472
+ bitblock_has_bit(u8prefix3or4)
1473
+
1474
+ /*:39*/
1475
+ #line 1307 "libu8u16.w"
1476
+ ){
1477
+ /*22:*/
1478
+ #line 612 "libu8u16.w"
1479
+
1480
+ #if (P2S_ALGORITHM == P2S_IDEAL)
1481
+ #if (BYTE_ORDER == BIG_ENDIAN)
1482
+ p2s_567_ideal(u16hi5,u16hi6,u16hi7,
1483
+ U16h0,U16h1,U16h2,U16h3,U16h4,U16h5,U16h6,U16h7)
1484
+ #endif
1485
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1486
+ p2s_567_ideal(u16hi5,u16hi6,u16hi7,
1487
+ U16h7,U16h6,U16h5,U16h4,U16h3,U16h2,U16h1,U16h0)
1488
+ #endif
1489
+ #endif
1490
+
1491
+ /*:22*//*73:*/
1492
+ #line 1679 "libu8u16.w"
1493
+
1494
+ #if (P2S_ALGORITHM == P2S_BYTEMERGE)
1495
+ #if (BYTE_ORDER == BIG_ENDIAN)
1496
+ p2s_567_bytemerge(u16hi5,u16hi6,u16hi7,
1497
+ U16h0,U16h1,U16h2,U16h3,U16h4,U16h5,U16h6,U16h7)
1498
+ #endif
1499
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1500
+ p2s_567_bytemerge(u16hi5,u16hi6,u16hi7,
1501
+ U16h7,U16h6,U16h5,U16h4,U16h3,U16h2,U16h1,U16h0)
1502
+ #endif
1503
+ #endif
1504
+
1505
+
1506
+ /*:73*/
1507
+ #line 1308 "libu8u16.w"
1508
+
1509
+ }
1510
+ else{
1511
+ /*62:*/
1512
+ #line 1363 "libu8u16.w"
1513
+
1514
+ #if (BIT_DELETION == ROTATION_TO_LEFT8)
1515
+ u16hi0= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi0,rotl_2),rotl_4),sll_8);
1516
+ u16hi1= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi1,rotl_2),rotl_4),sll_8);
1517
+ u16hi2= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi2,rotl_2),rotl_4),sll_8);
1518
+ u16hi3= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi3,rotl_2),rotl_4),sll_8);
1519
+ u16hi4= simd_sll_8(simd_rotl_4(simd_rotl_2(u16hi4,rotl_2),rotl_4),sll_8);
1520
+ #endif
1521
+
1522
+ /*:62*//*81:*/
1523
+ #line 1913 "libu8u16.w"
1524
+
1525
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_LEFT8)
1526
+ {
1527
+ }
1528
+ #endif
1529
+
1530
+ /*:81*//*92:*/
1531
+ #line 2069 "libu8u16.w"
1532
+
1533
+ #if (BIT_DELETION == SHIFT_TO_RIGHT4)
1534
+ do_right4_shifts(u16hi0,del4_rshift1,del4_rshift2)
1535
+ do_right4_shifts(u16hi1,del4_rshift1,del4_rshift2)
1536
+ do_right4_shifts(u16hi2,del4_rshift1,del4_rshift2)
1537
+ do_right4_shifts(u16hi3,del4_rshift1,del4_rshift2)
1538
+ do_right4_shifts(u16hi4,del4_rshift1,del4_rshift2)
1539
+ #endif
1540
+
1541
+ /*:92*//*101:*/
1542
+ #line 2184 "libu8u16.w"
1543
+
1544
+ #if (BIT_DELETION == SHIFT_TO_RIGHT8)
1545
+ do_right8_shifts(u16hi0,del8_rshift1,del8_rshift2,del8_rshift4)
1546
+ do_right8_shifts(u16hi1,del8_rshift1,del8_rshift2,del8_rshift4)
1547
+ do_right8_shifts(u16hi2,del8_rshift1,del8_rshift2,del8_rshift4)
1548
+ do_right8_shifts(u16hi3,del8_rshift1,del8_rshift2,del8_rshift4)
1549
+ do_right8_shifts(u16hi4,del8_rshift1,del8_rshift2,del8_rshift4)
1550
+ #endif
1551
+ /*:101*/
1552
+ #line 1311 "libu8u16.w"
1553
+
1554
+ /*20:*/
1555
+ #line 559 "libu8u16.w"
1556
+
1557
+ #if (P2S_ALGORITHM == P2S_IDEAL)
1558
+ #if (BYTE_ORDER == BIG_ENDIAN)
1559
+ p2s_ideal(u16hi0,u16hi1,u16hi2,u16hi3,u16hi4,u16hi5,u16hi6,u16hi7,
1560
+ U16h0,U16h1,U16h2,U16h3,U16h4,U16h5,U16h6,U16h7)
1561
+ #endif
1562
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1563
+ p2s_ideal(u16hi0,u16hi1,u16hi2,u16hi3,u16hi4,u16hi5,u16hi6,u16hi7,
1564
+ U16h7,U16h6,U16h5,U16h4,U16h3,U16h2,U16h1,U16h0)
1565
+ #endif
1566
+ #endif
1567
+
1568
+ /*:20*//*71:*/
1569
+ #line 1621 "libu8u16.w"
1570
+
1571
+ #if (P2S_ALGORITHM == P2S_BYTEMERGE)
1572
+ #if (BYTE_ORDER == BIG_ENDIAN)
1573
+ p2s_bytemerge(u16hi0,u16hi1,u16hi2,u16hi3,u16hi4,u16hi5,u16hi6,u16hi7,
1574
+ U16h0,U16h1,U16h2,U16h3,U16h4,U16h5,U16h6,U16h7)
1575
+ #endif
1576
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1577
+ p2s_bytemerge(u16hi0,u16hi1,u16hi2,u16hi3,u16hi4,u16hi5,u16hi6,u16hi7,
1578
+ U16h7,U16h6,U16h5,U16h4,U16h3,U16h2,U16h1,U16h0)
1579
+ #endif
1580
+ #endif
1581
+
1582
+ /*:71*/
1583
+ #line 1312 "libu8u16.w"
1584
+
1585
+ }
1586
+ /*21:*/
1587
+ #line 571 "libu8u16.w"
1588
+
1589
+ #if (P2S_ALGORITHM == P2S_IDEAL)
1590
+ #if (BYTE_ORDER == BIG_ENDIAN)
1591
+ p2s_ideal(u16lo0,u16lo1,u16lo2,u16lo3,u16lo4,u16lo5,u16lo6,u16lo7,
1592
+ U16l0,U16l1,U16l2,U16l3,U16l4,U16l5,U16l6,U16l7)
1593
+ #endif
1594
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1595
+ p2s_ideal(u16lo0,u16lo1,u16lo2,u16lo3,u16lo4,u16lo5,u16lo6,u16lo7,
1596
+ U16l7,U16l6,U16l5,U16l4,U16l3,U16l2,U16l1,U16l0)
1597
+ #endif
1598
+ #endif
1599
+
1600
+
1601
+ /*:21*//*72:*/
1602
+ #line 1633 "libu8u16.w"
1603
+
1604
+ #if (P2S_ALGORITHM == P2S_BYTEMERGE)
1605
+ #if (BYTE_ORDER == BIG_ENDIAN)
1606
+ p2s_bytemerge(u16lo0,u16lo1,u16lo2,u16lo3,u16lo4,u16lo5,u16lo6,u16lo7,
1607
+ U16l0,U16l1,U16l2,U16l3,U16l4,U16l5,U16l6,U16l7)
1608
+ #endif
1609
+ #if (BYTE_ORDER == LITTLE_ENDIAN)
1610
+ p2s_bytemerge(u16lo0,u16lo1,u16lo2,u16lo3,u16lo4,u16lo5,u16lo6,u16lo7,
1611
+ U16l7,U16l6,U16l5,U16l4,U16l3,U16l2,U16l1,U16l0)
1612
+ #endif
1613
+ #endif
1614
+
1615
+
1616
+ /*:72*/
1617
+ #line 1314 "libu8u16.w"
1618
+
1619
+ /*64:*/
1620
+ #line 1389 "libu8u16.w"
1621
+
1622
+
1623
+
1624
+
1625
+ /*:64*//*83:*/
1626
+ #line 1934 "libu8u16.w"
1627
+
1628
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_LEFT8)
1629
+ {
1630
+ BitBlock high_perm,low_perm;
1631
+ unpack_packed_permutation(l8perm0,high_perm,low_perm)
1632
+ U16l0= simd_permute(U16l0,U16l0,high_perm);
1633
+ U16h0= simd_permute(U16h0,U16h0,high_perm);
1634
+ U16l1= simd_permute(U16l1,U16l1,low_perm);
1635
+ U16h1= simd_permute(U16h1,U16h1,low_perm);
1636
+ unpack_packed_permutation(l8perm1,high_perm,low_perm)
1637
+ U16l2= simd_permute(U16l2,U16l2,high_perm);
1638
+ U16h2= simd_permute(U16h2,U16h2,high_perm);
1639
+ U16l3= simd_permute(U16l3,U16l3,low_perm);
1640
+ U16h3= simd_permute(U16h3,U16h3,low_perm);
1641
+ unpack_packed_permutation(l8perm2,high_perm,low_perm)
1642
+ U16l4= simd_permute(U16l4,U16l4,high_perm);
1643
+ U16h4= simd_permute(U16h4,U16h4,high_perm);
1644
+ U16l5= simd_permute(U16l5,U16l5,low_perm);
1645
+ U16h5= simd_permute(U16h5,U16h5,low_perm);
1646
+ unpack_packed_permutation(l8perm3,high_perm,low_perm)
1647
+ U16l6= simd_permute(U16l6,U16l6,high_perm);
1648
+ U16h6= simd_permute(U16h6,U16h6,high_perm);
1649
+ U16l7= simd_permute(U16l7,U16l7,low_perm);
1650
+ U16h7= simd_permute(U16h7,U16h7,low_perm);
1651
+
1652
+ }
1653
+ #endif
1654
+
1655
+
1656
+
1657
+ /*:83*//*103:*/
1658
+ #line 2209 "libu8u16.w"
1659
+
1660
+ #if (BYTE_DELETION == BYTE_DEL_BY_PERMUTE_TO_RIGHT8)
1661
+ {
1662
+ BitBlock permute_index_bit0= simd_andc(simd_const_8(0xAA),delmask);
1663
+ BitBlock permute_index_bit1= simd_andc(simd_const_8(0xCC),delmask);
1664
+ BitBlock permute_index_bit2= simd_andc(simd_const_8(0xF0),delmask);
1665
+ BitBlock permute_high_offset= sisd_sfli(simd_const_8(0x08),64);
1666
+ BitBlock perm[8];
1667
+
1668
+ do_right8_shifts(permute_index_bit0,del8_rshift1,del8_rshift2,del8_rshift4)
1669
+ do_right8_shifts(permute_index_bit1,del8_rshift1,del8_rshift2,del8_rshift4)
1670
+ do_right8_shifts(permute_index_bit2,del8_rshift1,del8_rshift2,del8_rshift4)
1671
+
1672
+ p2s_567_bytemerge(permute_index_bit2,permute_index_bit1,permute_index_bit0,
1673
+ perm[7],perm[6],perm[5],perm[4],perm[3],perm[2],perm[1],perm[0])
1674
+
1675
+ perm[0]= simd_or(perm[0],permute_high_offset);
1676
+ perm[1]= simd_or(perm[1],permute_high_offset);
1677
+ perm[2]= simd_or(perm[2],permute_high_offset);
1678
+ perm[3]= simd_or(perm[3],permute_high_offset);
1679
+ perm[4]= simd_or(perm[4],permute_high_offset);
1680
+ perm[5]= simd_or(perm[5],permute_high_offset);
1681
+ perm[6]= simd_or(perm[6],permute_high_offset);
1682
+ perm[7]= simd_or(perm[7],permute_high_offset);
1683
+
1684
+ U16l0= simd_permute(U16l0,perm[0]);
1685
+ U16h0= simd_permute(U16h0,perm[0]);
1686
+ U16l1= simd_permute(U16l1,perm[1]);
1687
+ U16h1= simd_permute(U16h1,perm[1]);
1688
+ U16l2= simd_permute(U16l2,perm[2]);
1689
+ U16h2= simd_permute(U16h2,perm[2]);
1690
+ U16l3= simd_permute(U16l3,perm[3]);
1691
+ U16h3= simd_permute(U16h3,perm[3]);
1692
+ U16l4= simd_permute(U16l4,perm[4]);
1693
+ U16h4= simd_permute(U16h4,perm[4]);
1694
+ U16l5= simd_permute(U16l5,perm[5]);
1695
+ U16h5= simd_permute(U16h5,perm[5]);
1696
+ U16l6= simd_permute(U16l6,perm[6]);
1697
+ U16h6= simd_permute(U16h6,perm[6]);
1698
+ U16l7= simd_permute(U16l7,perm[7]);
1699
+ U16h7= simd_permute(U16h7,perm[7]);
1700
+
1701
+ }
1702
+ #endif
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+ /*:103*/
1709
+ #line 1315 "libu8u16.w"
1710
+
1711
+ /*23:*/
1712
+ #line 630 "libu8u16.w"
1713
+
1714
+ U16s0= u16_merge0(U16h0,U16l0);
1715
+ U16s1= u16_merge1(U16h0,U16l0);
1716
+ U16s2= u16_merge0(U16h1,U16l1);
1717
+ U16s3= u16_merge1(U16h1,U16l1);
1718
+ U16s4= u16_merge0(U16h2,U16l2);
1719
+ U16s5= u16_merge1(U16h2,U16l2);
1720
+ U16s6= u16_merge0(U16h3,U16l3);
1721
+ U16s7= u16_merge1(U16h3,U16l3);
1722
+ U16s8= u16_merge0(U16h4,U16l4);
1723
+ U16s9= u16_merge1(U16h4,U16l4);
1724
+ U16s10= u16_merge0(U16h5,U16l5);
1725
+ U16s11= u16_merge1(U16h5,U16l5);
1726
+ U16s12= u16_merge0(U16h6,U16l6);
1727
+ U16s13= u16_merge1(U16h6,U16l6);
1728
+ U16s14= u16_merge0(U16h7,U16l7);
1729
+ U16s15= u16_merge1(U16h7,U16l7);
1730
+
1731
+
1732
+ /*:23*/
1733
+ #line 1316 "libu8u16.w"
1734
+
1735
+ /*65:*/
1736
+ #line 1398 "libu8u16.w"
1737
+
1738
+ #ifdef OUTBUF_WRITE_NONALIGNED
1739
+ u16advance= 0;
1740
+ unaligned_output_step(U16s0,u16_bytes_per_reg[0])
1741
+ unaligned_output_step(U16s1,u16_bytes_per_reg[1])
1742
+ unaligned_output_step(U16s2,u16_bytes_per_reg[2])
1743
+ unaligned_output_step(U16s3,u16_bytes_per_reg[3])
1744
+ unaligned_output_step(U16s4,u16_bytes_per_reg[4])
1745
+ unaligned_output_step(U16s5,u16_bytes_per_reg[5])
1746
+ unaligned_output_step(U16s6,u16_bytes_per_reg[6])
1747
+ unaligned_output_step(U16s7,u16_bytes_per_reg[7])
1748
+ unaligned_output_step(U16s8,u16_bytes_per_reg[8])
1749
+ unaligned_output_step(U16s9,u16_bytes_per_reg[9])
1750
+ unaligned_output_step(U16s10,u16_bytes_per_reg[10])
1751
+ unaligned_output_step(U16s11,u16_bytes_per_reg[11])
1752
+ unaligned_output_step(U16s12,u16_bytes_per_reg[12])
1753
+ unaligned_output_step(U16s13,u16_bytes_per_reg[13])
1754
+ unaligned_output_step(U16s14,u16_bytes_per_reg[14])
1755
+ unaligned_output_step(U16s15,u16_bytes_per_reg[15])
1756
+ #endif
1757
+
1758
+
1759
+
1760
+ /*:65*//*85:*/
1761
+ #line 1977 "libu8u16.w"
1762
+
1763
+ #if ((U8U16_TARGET == ALTIVEC_TARGET) || (U8U16_TARGET == SPU_TARGET))
1764
+ {
1765
+ u16advance= 0;
1766
+ BitBlock vec_0__15= vec_lvsl1(0);
1767
+ unsigned char*dbyte_count= (unsigned char*)&u16_bytes_8;
1768
+ output_step(U16s0,0)
1769
+ output_step(U16s1,1)
1770
+ output_step(U16s2,2)
1771
+ output_step(U16s3,3)
1772
+ output_step(U16s4,4)
1773
+ output_step(U16s5,5)
1774
+ output_step(U16s6,6)
1775
+ output_step(U16s7,7)
1776
+ output_step(U16s8,8)
1777
+ output_step(U16s9,9)
1778
+ output_step(U16s10,10)
1779
+ output_step(U16s11,11)
1780
+ output_step(U16s12,12)
1781
+ output_step(U16s13,13)
1782
+ output_step(U16s14,14)
1783
+ output_step(U16s15,15)
1784
+ vec_st(simd_permute(pending,simd_const_8(0),
1785
+ vec_lvsl1(16-(0x0F&((int)&U16out[u16advance])))),
1786
+ u16advance-1,U16out);
1787
+ }
1788
+ #endif
1789
+
1790
+ /*:85*/
1791
+ #line 1317 "libu8u16.w"
1792
+
1793
+
1794
+
1795
+ /*:57*/
1796
+ #line 679 "libu8u16.w"
1797
+
1798
+ if(bitblock_has_bit(error_mask))/*67:*/
1799
+ #line 1428 "libu8u16.w"
1800
+
1801
+ {
1802
+ BitBlock cutoff_mask,errbit,u8scopex2;
1803
+ int errpos,u8u16errno;
1804
+ /*44:*/
1805
+ #line 1063 "libu8u16.w"
1806
+
1807
+ u8scope32= bitblock_sfli(u8prefix3,1);
1808
+
1809
+ /*:44*/
1810
+ #line 1432 "libu8u16.w"
1811
+
1812
+ /*45:*/
1813
+ #line 1068 "libu8u16.w"
1814
+
1815
+ u8scope42= bitblock_sfli(u8prefix4,1);
1816
+ u8scope43= bitblock_sfli(u8prefix4,2);
1817
+ u8surrogate= simd_or(u8scope42,u8scope44);
1818
+
1819
+
1820
+
1821
+ /*:45*/
1822
+ #line 1433 "libu8u16.w"
1823
+
1824
+ u8scopex2= simd_or(u8scope22,simd_or(u8scope32,u8scope42));
1825
+ if(!bitblock_has_bit(simd_and(error_mask,input_select_mask))){
1826
+
1827
+ u8u16errno= EINVAL;
1828
+ }
1829
+ else{
1830
+ u8u16errno= EILSEQ;
1831
+ }
1832
+ errpos= count_forward_zeroes(error_mask);
1833
+ u8advance= errpos-count_forward_zeroes(input_select_mask);
1834
+ cutoff_mask= sisd_sfl(simd_const_8(-1),sisd_from_int(errpos));
1835
+ errbit= simd_andc(error_mask,sisd_sfli(cutoff_mask,1));
1836
+ input_select_mask= simd_andc(input_select_mask,cutoff_mask);
1837
+ u16advance= 2*(bitblock_bit_count(simd_and(u8lastbyte,input_select_mask))+
1838
+ bitblock_bit_count(simd_and(u8scope42,input_select_mask)));
1839
+ if(bitblock_has_bit(simd_and(u8scope44,errbit))){
1840
+ u8advance-= 3;
1841
+ u16advance-= 2;
1842
+ }
1843
+ else if(bitblock_has_bit(simd_and(u8scope43,errbit))){
1844
+ u8advance-= 2;
1845
+ u16advance-= 2;
1846
+ }
1847
+ else if(bitblock_has_bit(simd_and(u8scope33,errbit))){
1848
+ u8advance-= 2;
1849
+ }
1850
+ else if(bitblock_has_bit(simd_and(u8scopex2,errbit))){
1851
+ u8advance-= 1;
1852
+ }
1853
+
1854
+ /*26:*/
1855
+ #line 704 "libu8u16.w"
1856
+
1857
+ inbytes-= u8advance;
1858
+ U8data+= u8advance;
1859
+ U16out+= u16advance;
1860
+
1861
+ /*:26*/
1862
+ #line 1464 "libu8u16.w"
1863
+
1864
+
1865
+ *outbytesleft-= (intptr_t)U16out-(intptr_t)*outbuf;
1866
+ *inbytesleft= inbytes;
1867
+ *inbuf= (char*)U8data;
1868
+ *outbuf= (char*)U16out;
1869
+ /*97:*/
1870
+ #line 2123 "libu8u16.w"
1871
+
1872
+ #if (U8U16_TARGET == MMX_TARGET)
1873
+ _mm_empty();
1874
+ #endif
1875
+
1876
+ /*:97*/
1877
+ #line 1470 "libu8u16.w"
1878
+ ;
1879
+ errno= u8u16errno;
1880
+ return(size_t)-1;
1881
+ }
1882
+
1883
+ /*:67*/
1884
+ #line 680 "libu8u16.w"
1885
+
1886
+ /*26:*/
1887
+ #line 704 "libu8u16.w"
1888
+
1889
+ inbytes-= u8advance;
1890
+ U8data+= u8advance;
1891
+ U16out+= u16advance;
1892
+
1893
+ /*:26*/
1894
+ #line 681 "libu8u16.w"
1895
+
1896
+ }
1897
+ /*29:*/
1898
+ #line 763 "libu8u16.w"
1899
+
1900
+ *outbytesleft-= (intptr_t)U16out-(intptr_t)*outbuf;
1901
+ *inbuf= (char*)U8data;
1902
+ *inbytesleft= inbytes;
1903
+ *outbuf= (char*)U16out;
1904
+ /*97:*/
1905
+ #line 2123 "libu8u16.w"
1906
+
1907
+ #if (U8U16_TARGET == MMX_TARGET)
1908
+ _mm_empty();
1909
+ #endif
1910
+
1911
+ /*:97*/
1912
+ #line 768 "libu8u16.w"
1913
+ ;
1914
+ if(inbytes==0)return(size_t)0;
1915
+ else return(size_t)-1;
1916
+
1917
+
1918
+ /*:29*/
1919
+ #line 683 "libu8u16.w"
1920
+
1921
+ }
1922
+
1923
+ /*:24*/
1924
+ #line 267 "libu8u16.w"
1925
+
1926
+ else return buffered_u8u16(inbuf,inbytesleft,outbuf,outbytesleft);
1927
+ }
1928
+ else if(inbuf==NULL||*inbuf==NULL||*inbytesleft==0)
1929
+ return(size_t)0;
1930
+ else{errno= E2BIG;return(size_t)-1;}
1931
+ }
1932
+
1933
+ /*:5*//*69:*/
1934
+ #line 1483 "libu8u16.w"
1935
+
1936
+ size_t
1937
+ buffered_u8u16(char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft){
1938
+ if(inbuf&&*inbuf&&outbuf&&*outbuf){
1939
+ unsigned char*inbuf_start= (unsigned char*)*inbuf;
1940
+ size_t max_inbytes= min(3*(*outbytesleft)/2,*inbytesleft);
1941
+ size_t internal_space= 2*(*inbytesleft)+PACKSIZE;
1942
+ size_t internal_space_left= internal_space;
1943
+ char*internal_buf_start= (char*)malloc(internal_space);
1944
+ char*internal_buf= internal_buf_start;
1945
+ size_t return_code= u8u16(inbuf,&max_inbytes,&internal_buf,&internal_space_left);
1946
+ intptr_t u16advance= internal_space-internal_space_left;
1947
+ intptr_t u8advance= (intptr_t)(*inbuf)-(intptr_t)inbuf_start;
1948
+ if(size_t(u16advance)> *outbytesleft){
1949
+ errno= E2BIG;
1950
+ return_code= (size_t)-1;
1951
+ do{
1952
+ do{
1953
+ u8advance--;
1954
+ }
1955
+ while(is_suffix_byte(inbuf_start[u8advance]));
1956
+ if(is_prefix4_byte(inbuf_start[u8advance]))u16advance-= 4;
1957
+ else u16advance-= 2;
1958
+ }while(size_t(u16advance)> *outbytesleft);
1959
+ }
1960
+ memcpy(*outbuf,internal_buf_start,u16advance);
1961
+ free(internal_buf_start);
1962
+ *inbuf= (char*)inbuf_start+u8advance;
1963
+ *inbytesleft-= u8advance;
1964
+ *outbuf+= u16advance;
1965
+ *outbytesleft-= u16advance;
1966
+ return return_code;
1967
+ }
1968
+ else if(inbuf==NULL||*inbuf==NULL||*inbytesleft==0)
1969
+ return(size_t)0;
1970
+ else{errno= E2BIG;return(size_t)-1;}
1971
+ }
1972
+
1973
+
1974
+
1975
+ /*:69*/