react-native-executorch 0.10.6 → 0.10.7

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 (237) hide show
  1. package/lib/module/fetcher/telemetry.js +1 -1
  2. package/package.json +1 -1
  3. package/react-native-executorch.podspec +2 -0
  4. package/src/fetcher/telemetry.ts +1 -1
  5. package/third-party/common/phonemis/CMakeLists.txt +70 -14
  6. package/third-party/common/phonemis/README.md +183 -33
  7. package/third-party/common/phonemis/THIRD_PARTY_NOTICES.md +57 -0
  8. package/third-party/common/phonemis/knowledge/code_style.md +642 -0
  9. package/third-party/common/phonemis/licenses/Unicode-3.0.txt +39 -0
  10. package/third-party/common/phonemis/licenses/misaki-Apache-2.0.txt +201 -0
  11. package/third-party/common/phonemis/licenses/nlohmann-json-MIT.txt +21 -0
  12. package/third-party/common/phonemis/licenses/xsimd-BSD-3-Clause.txt +29 -0
  13. package/third-party/common/phonemis/src/phonemis/base/config.h +6 -0
  14. package/third-party/common/phonemis/src/phonemis/base/ipipeline.cpp +75 -0
  15. package/third-party/common/phonemis/src/phonemis/base/ipipeline.h +21 -0
  16. package/third-party/common/phonemis/src/phonemis/base/phonemizer/constants.h +2 -5
  17. package/third-party/common/phonemis/src/phonemis/base/phonemizer/lexicon_phonemizer.cpp +3 -4
  18. package/third-party/common/phonemis/src/phonemis/base/phonemizer/nn/neural_phonemizer.cpp +17 -8
  19. package/third-party/common/phonemis/src/phonemis/base/phonemizer/nn/neural_phonemizer.h +4 -0
  20. package/third-party/common/phonemis/src/phonemis/base/phonemizer/nn/tokenizer.cpp +21 -6
  21. package/third-party/common/phonemis/src/phonemis/base/phonemizer/nn/tokenizer.h +13 -4
  22. package/third-party/common/phonemis/src/phonemis/base/pipeline.cpp +8 -0
  23. package/third-party/common/phonemis/src/phonemis/base/pipeline.h +19 -0
  24. package/third-party/common/phonemis/src/phonemis/base/processor/common/conditions.cpp +37 -0
  25. package/third-party/common/phonemis/src/phonemis/base/processor/common/conditions.h +45 -0
  26. package/third-party/common/phonemis/src/phonemis/base/processor/common/constants.h +10 -0
  27. package/third-party/common/phonemis/src/phonemis/base/processor/common/context.cpp +105 -0
  28. package/third-party/common/phonemis/src/phonemis/base/processor/common/context.h +49 -0
  29. package/third-party/common/phonemis/src/phonemis/base/processor/common/document.cpp +173 -0
  30. package/third-party/common/phonemis/src/phonemis/base/processor/common/document.h +67 -0
  31. package/third-party/common/phonemis/src/phonemis/base/processor/common/text.cpp +75 -0
  32. package/third-party/common/phonemis/src/phonemis/base/processor/common/text.h +60 -0
  33. package/third-party/common/phonemis/src/phonemis/base/processor/common/types.h +18 -0
  34. package/third-party/common/phonemis/src/phonemis/base/processor/config.h +53 -0
  35. package/third-party/common/phonemis/src/phonemis/base/processor/layer.h +9 -7
  36. package/third-party/common/phonemis/src/phonemis/base/processor/layers/normalize/constants.h +20 -0
  37. package/third-party/common/phonemis/src/phonemis/base/processor/layers/normalize/layer.cpp +89 -0
  38. package/third-party/common/phonemis/src/phonemis/base/processor/layers/normalize/layer.h +35 -0
  39. package/third-party/common/phonemis/src/phonemis/base/processor/layers/normalize/types.h +16 -0
  40. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/kind.h +40 -0
  41. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/layer.h +382 -0
  42. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/notation.h +30 -0
  43. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/numerals.cpp +51 -0
  44. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/numerals.h +31 -0
  45. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/pattern.h +30 -0
  46. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/pattern_set.cpp +17 -0
  47. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/pattern_set.h +31 -0
  48. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/patterns.cpp +811 -0
  49. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/patterns.h +285 -0
  50. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/primitives.cpp +64 -0
  51. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/primitives.h +23 -0
  52. package/third-party/common/phonemis/src/phonemis/base/processor/layers/num2word/types.h +94 -0
  53. package/third-party/common/phonemis/src/phonemis/base/processor/layers/sanitizer/layer.cpp +19 -0
  54. package/third-party/common/phonemis/src/phonemis/base/processor/{sanitizer_layer.h → layers/sanitizer/layer.h} +8 -8
  55. package/third-party/common/phonemis/src/phonemis/base/processor/layers/sym2word/layer.cpp +65 -0
  56. package/third-party/common/phonemis/src/phonemis/base/processor/layers/sym2word/layer.h +29 -0
  57. package/third-party/common/phonemis/src/phonemis/base/processor/layers/term2word/layer.cpp +170 -0
  58. package/third-party/common/phonemis/src/phonemis/base/processor/layers/term2word/layer.h +40 -0
  59. package/third-party/common/phonemis/src/phonemis/base/processor/layers/term2word/types.h +25 -0
  60. package/third-party/common/phonemis/src/phonemis/base/processor/layers/trim/layer.cpp +47 -0
  61. package/third-party/common/phonemis/src/phonemis/base/processor/layers/trim/layer.h +19 -0
  62. package/third-party/common/phonemis/src/phonemis/base/processor/preprocessor.cpp +60 -0
  63. package/third-party/common/phonemis/src/phonemis/base/processor/preprocessor.h +45 -0
  64. package/third-party/common/phonemis/src/phonemis/base/processor/processor.cpp +6 -7
  65. package/third-party/common/phonemis/src/phonemis/base/processor/processor.h +14 -10
  66. package/third-party/common/phonemis/src/phonemis/base/tagger/hmm_tagger.cpp +89 -52
  67. package/third-party/common/phonemis/src/phonemis/base/tagger/hmm_tagger.h +16 -9
  68. package/third-party/common/phonemis/src/phonemis/base/tokenizer/tokenizer.cpp +13 -12
  69. package/third-party/common/phonemis/src/phonemis/lang/de/constants.h +183 -19
  70. package/third-party/common/phonemis/src/phonemis/lang/de/num2word.cpp +355 -309
  71. package/third-party/common/phonemis/src/phonemis/lang/de/num2word.h +42 -17
  72. package/third-party/common/phonemis/src/phonemis/lang/de/patterns.cpp +56 -0
  73. package/third-party/common/phonemis/src/phonemis/lang/de/patterns.h +15 -0
  74. package/third-party/common/phonemis/src/phonemis/lang/de/pipeline.h +3 -3
  75. package/third-party/common/phonemis/src/phonemis/lang/en/constants.h +181 -30
  76. package/third-party/common/phonemis/src/phonemis/lang/en/hmm_tagger.cpp +5 -7
  77. package/third-party/common/phonemis/src/phonemis/lang/en/num2word.cpp +232 -135
  78. package/third-party/common/phonemis/src/phonemis/lang/en/num2word.h +41 -16
  79. package/third-party/common/phonemis/src/phonemis/lang/en/pipeline.h +3 -10
  80. package/third-party/common/phonemis/src/phonemis/lang/es/constants.h +182 -60
  81. package/third-party/common/phonemis/src/phonemis/lang/es/num2word.cpp +247 -212
  82. package/third-party/common/phonemis/src/phonemis/lang/es/num2word.h +38 -18
  83. package/third-party/common/phonemis/src/phonemis/lang/es/patterns.cpp +50 -0
  84. package/third-party/common/phonemis/src/phonemis/lang/es/patterns.h +15 -0
  85. package/third-party/common/phonemis/src/phonemis/lang/es/pipeline.h +3 -3
  86. package/third-party/common/phonemis/src/phonemis/lang/fr/constants.h +152 -26
  87. package/third-party/common/phonemis/src/phonemis/lang/fr/num2word.cpp +252 -179
  88. package/third-party/common/phonemis/src/phonemis/lang/fr/num2word.h +38 -15
  89. package/third-party/common/phonemis/src/phonemis/lang/fr/patterns.cpp +83 -0
  90. package/third-party/common/phonemis/src/phonemis/lang/fr/patterns.h +15 -0
  91. package/third-party/common/phonemis/src/phonemis/lang/fr/pipeline.h +3 -3
  92. package/third-party/common/phonemis/src/phonemis/lang/hi/constants.h +62 -10
  93. package/third-party/common/phonemis/src/phonemis/lang/hi/num2word.cpp +74 -123
  94. package/third-party/common/phonemis/src/phonemis/lang/hi/num2word.h +27 -16
  95. package/third-party/common/phonemis/src/phonemis/lang/hi/pipeline.h +5 -3
  96. package/third-party/common/phonemis/src/phonemis/lang/it/constants.h +122 -42
  97. package/third-party/common/phonemis/src/phonemis/lang/it/num2word.cpp +200 -207
  98. package/third-party/common/phonemis/src/phonemis/lang/it/num2word.h +30 -18
  99. package/third-party/common/phonemis/src/phonemis/lang/it/patterns.cpp +25 -0
  100. package/third-party/common/phonemis/src/phonemis/lang/it/patterns.h +15 -0
  101. package/third-party/common/phonemis/src/phonemis/lang/it/pipeline.h +3 -3
  102. package/third-party/common/phonemis/src/phonemis/lang/pl/constants.h +346 -77
  103. package/third-party/common/phonemis/src/phonemis/lang/pl/num2word.cpp +631 -246
  104. package/third-party/common/phonemis/src/phonemis/lang/pl/num2word.h +47 -15
  105. package/third-party/common/phonemis/src/phonemis/lang/pl/pipeline.h +6 -6
  106. package/third-party/common/phonemis/src/phonemis/lang/pt/constants.h +201 -0
  107. package/third-party/common/phonemis/src/phonemis/lang/pt/num2word.cpp +365 -0
  108. package/third-party/common/phonemis/src/phonemis/lang/pt/num2word.h +53 -0
  109. package/third-party/common/phonemis/src/phonemis/lang/pt/pipeline.h +4 -2
  110. package/third-party/common/phonemis/src/phonemis/main.cpp +42 -11
  111. package/third-party/common/phonemis/src/phonemis/protophone/meta.h +24 -0
  112. package/third-party/common/phonemis/src/phonemis/protophone/numeric.h +26 -0
  113. package/third-party/common/phonemis/src/phonemis/protophone/protophone.cpp +525 -0
  114. package/third-party/common/phonemis/src/phonemis/protophone/protophone.h +80 -0
  115. package/third-party/common/phonemis/src/phonemis/protophone/tensor.h +76 -0
  116. package/third-party/common/phonemis/src/phonemis/protophone/tensor_utils.h +89 -0
  117. package/third-party/common/phonemis/src/phonemis/protophone/tensor_view.h +125 -0
  118. package/third-party/common/phonemis/src/phonemis/protophone/types.h +43 -0
  119. package/third-party/common/phonemis/src/phonemis/utils/strings.h +20 -14
  120. package/third-party/common/phonemis/src/phonemis/utils/unicode.h +15 -1
  121. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_arithmetic.hpp +267 -0
  122. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_bit.hpp +232 -0
  123. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_cast.hpp +43 -0
  124. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_complex.hpp +112 -0
  125. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_details.hpp +386 -0
  126. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_logical.hpp +240 -0
  127. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_math.hpp +2601 -0
  128. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_memory.hpp +1006 -0
  129. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_rounding.hpp +72 -0
  130. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_swizzle.hpp +260 -0
  131. package/third-party/common/phonemis/src/third-party/xsimd/arch/common/xsimd_common_trigo.hpp +996 -0
  132. package/third-party/common/phonemis/src/third-party/xsimd/arch/utils/shifts.hpp +82 -0
  133. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx.hpp +2111 -0
  134. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx2.hpp +1591 -0
  135. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx2_128.hpp +170 -0
  136. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512bw.hpp +724 -0
  137. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512cd.hpp +28 -0
  138. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512dq.hpp +270 -0
  139. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512er.hpp +17 -0
  140. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512f.hpp +2919 -0
  141. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512ifma.hpp +17 -0
  142. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512pf.hpp +17 -0
  143. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512vbmi.hpp +76 -0
  144. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512vbmi2.hpp +130 -0
  145. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512vnni_avx512bw.hpp +17 -0
  146. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp +17 -0
  147. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avx_128.hpp +164 -0
  148. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_avxvnni.hpp +17 -0
  149. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_common.hpp +26 -0
  150. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_common_fwd.hpp +127 -0
  151. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_constants.hpp +393 -0
  152. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_emulated.hpp +787 -0
  153. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_fma3_avx.hpp +93 -0
  154. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_fma3_avx2.hpp +46 -0
  155. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_fma3_sse.hpp +97 -0
  156. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_fma4.hpp +92 -0
  157. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_i8mm_neon64.hpp +17 -0
  158. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_isa.hpp +148 -0
  159. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_neon.hpp +3580 -0
  160. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_neon64.hpp +1614 -0
  161. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_rvv.hpp +1515 -0
  162. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_scalar.hpp +1210 -0
  163. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_sse2.hpp +2333 -0
  164. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_sse3.hpp +66 -0
  165. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_sse4_1.hpp +510 -0
  166. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_sse4_2.hpp +44 -0
  167. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_ssse3.hpp +186 -0
  168. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_sve.hpp +1186 -0
  169. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_vsx.hpp +947 -0
  170. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_vxe.hpp +787 -0
  171. package/third-party/common/phonemis/src/third-party/xsimd/arch/xsimd_wasm.hpp +1819 -0
  172. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_arch.hpp +242 -0
  173. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_config.hpp +633 -0
  174. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features.hpp +50 -0
  175. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features_arm.hpp +132 -0
  176. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features_ppc.hpp +54 -0
  177. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features_riscv.hpp +95 -0
  178. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features_s390x.hpp +56 -0
  179. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpu_features_x86.hpp +1121 -0
  180. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_cpuid.hpp +144 -0
  181. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_getauxval.hpp +159 -0
  182. package/third-party/common/phonemis/src/third-party/xsimd/config/xsimd_macros.hpp +78 -0
  183. package/third-party/common/phonemis/src/third-party/xsimd/math/xsimd_rem_pio2.hpp +707 -0
  184. package/third-party/common/phonemis/src/third-party/xsimd/memory/xsimd_aligned_allocator.hpp +349 -0
  185. package/third-party/common/phonemis/src/third-party/xsimd/memory/xsimd_alignment.hpp +102 -0
  186. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_all_registers.hpp +57 -0
  187. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_api.hpp +3106 -0
  188. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx2_register.hpp +57 -0
  189. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512bw_register.hpp +51 -0
  190. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512cd_register.hpp +51 -0
  191. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512dq_register.hpp +51 -0
  192. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512er_register.hpp +51 -0
  193. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512f_register.hpp +77 -0
  194. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512ifma_register.hpp +51 -0
  195. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512pf_register.hpp +51 -0
  196. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512vbmi2_register.hpp +51 -0
  197. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512vbmi_register.hpp +51 -0
  198. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512vnni_avx512bw_register.hpp +54 -0
  199. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp +53 -0
  200. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avx_register.hpp +79 -0
  201. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_avxvnni_register.hpp +44 -0
  202. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_batch.hpp +1666 -0
  203. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_batch_constant.hpp +572 -0
  204. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_batch_fwd.hpp +41 -0
  205. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_common_arch.hpp +49 -0
  206. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_emulated_register.hpp +80 -0
  207. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_fma3_avx2_register.hpp +50 -0
  208. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_fma3_avx_register.hpp +50 -0
  209. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_fma3_sse_register.hpp +50 -0
  210. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_fma4_register.hpp +50 -0
  211. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_i8mm_neon64_register.hpp +55 -0
  212. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_neon64_register.hpp +55 -0
  213. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_neon_register.hpp +130 -0
  214. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_register.hpp +96 -0
  215. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_rvv_register.hpp +491 -0
  216. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_sse2_register.hpp +59 -0
  217. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_sse3_register.hpp +49 -0
  218. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_sse4_1_register.hpp +48 -0
  219. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_sse4_2_register.hpp +48 -0
  220. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_ssse3_register.hpp +48 -0
  221. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_sve_register.hpp +216 -0
  222. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_traits.hpp +409 -0
  223. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_utils.hpp +462 -0
  224. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_vsx_register.hpp +84 -0
  225. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_vxe_register.hpp +86 -0
  226. package/third-party/common/phonemis/src/third-party/xsimd/types/xsimd_wasm_register.hpp +59 -0
  227. package/third-party/common/phonemis/src/third-party/xsimd/utils/bits.hpp +122 -0
  228. package/third-party/common/phonemis/src/third-party/xsimd/utils/xsimd_type_traits.hpp +145 -0
  229. package/third-party/common/phonemis/src/third-party/xsimd/xsimd.hpp +43 -0
  230. package/third-party/common/phonemis/src/phonemis/base/processor/constants.h +0 -11
  231. package/third-party/common/phonemis/src/phonemis/base/processor/num2word/config.h +0 -16
  232. package/third-party/common/phonemis/src/phonemis/base/processor/num2word/layer.cpp +0 -271
  233. package/third-party/common/phonemis/src/phonemis/base/processor/num2word/layer.h +0 -45
  234. package/third-party/common/phonemis/src/phonemis/base/processor/num2word/types.h +0 -29
  235. package/third-party/common/phonemis/src/phonemis/base/processor/sanitizer_layer.cpp +0 -22
  236. package/third-party/common/phonemis/src/phonemis/base/processor/trim_layer.cpp +0 -40
  237. package/third-party/common/phonemis/src/phonemis/base/processor/trim_layer.h +0 -22
@@ -0,0 +1,633 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * *
7
+ * Distributed under the terms of the BSD 3-Clause License. *
8
+ * *
9
+ * The full license is in the file LICENSE, distributed with this software. *
10
+ ****************************************************************************/
11
+
12
+ #ifndef XSIMD_CONFIG_HPP
13
+ #define XSIMD_CONFIG_HPP
14
+
15
+ #define XSIMD_VERSION_MAJOR 14
16
+ #define XSIMD_VERSION_MINOR 2
17
+ #define XSIMD_VERSION_PATCH 0
18
+
19
+ #if defined(__GNUC__) && defined(__BYTE_ORDER__)
20
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
21
+ #define XSIMD_LITTLE_ENDIAN
22
+ #endif
23
+ #elif defined(_WIN32)
24
+ // We can safely assume that Windows is always little endian
25
+ #define XSIMD_LITTLE_ENDIAN
26
+ #elif defined(i386) || defined(i486) || defined(intel) || defined(x86) || defined(i86pc) || defined(__alpha) || defined(__osf__)
27
+ #define XSIMD_LITTLE_ENDIAN
28
+ #endif
29
+
30
+ /**
31
+ * @ingroup xsimd_config_macro
32
+ *
33
+ * Normalized C++ version number, equivalent to __cplusplus but also works with
34
+ * MSVC which requires /Zc:__cplusplus to set it correctly (otherwise it's always
35
+ * 199711L). Use this instead of __cplusplus throughout the codebase.
36
+ */
37
+ #if defined(_MSC_VER) && !defined(__clang__)
38
+ #define XSIMD_CPP_VERSION _MSVC_LANG
39
+ #else
40
+ #define XSIMD_CPP_VERSION __cplusplus
41
+ #endif
42
+
43
+ /**
44
+ * high level free functions
45
+ *
46
+ * @defgroup xsimd_config_macro Instruction Set Detection
47
+ */
48
+
49
+ /**
50
+ * @ingroup xsimd_config_macro
51
+ *
52
+ * Set to 1 if the target is the x86 architecture family.
53
+ */
54
+ #if defined(__x86_64__) || defined(__i386__) || defined(_M_AMD64) || defined(_M_IX86)
55
+ #define XSIMD_TARGET_X86 1
56
+ #else
57
+ #define XSIMD_TARGET_X86 0
58
+ #endif
59
+
60
+ /**
61
+ * @ingroup xsimd_config_macro
62
+ *
63
+ * Set to 1 if GNU-style inline assembly is available, to 0 otherwise.
64
+ */
65
+ /* Use __clang__ || __GNUC__ for GNU-style inline asm. clang-cl runs in
66
+ * MSVC-compatibility mode and does not define __GNUC__ by default, but it
67
+ * still defines __clang__. Clang documents __asm__/__asm__ support and broad
68
+ * GCC-extension compatibility:
69
+ * https://clang.llvm.org/docs/LanguageExtensions.html
70
+ * Clang only emits __GNUC__ when GNUCVersion != 0:
71
+ * https://raw.githubusercontent.com/llvm/llvm-project/main/clang/lib/Frontend/InitPreprocessor.cpp
72
+ * and GNUCVersion defaults to 0:
73
+ * https://raw.githubusercontent.com/llvm/llvm-project/main/clang/include/clang/Basic/LangOptions.def
74
+ */
75
+ #if defined(__clang__) || defined(__GNUC__)
76
+ #define XSIMD_WITH_INLINE_ASM 1
77
+ #else
78
+ #define XSIMD_WITH_INLINE_ASM 0
79
+ #endif
80
+
81
+ /**
82
+ * @ingroup xsimd_config_macro
83
+ *
84
+ * Set to 1 when the compiler is allowed to reassociate floating-point
85
+ * operations (e.g. -ffast-math, -fassociative-math). Detected
86
+ * automatically from __FAST_MATH__ (GCC/Clang) and __ASSOCIATIVE_MATH__
87
+ * (GCC). Clang does not define a macro for standalone
88
+ * -fassociative-math; users should define XSIMD_REASSOCIATIVE_MATH=1
89
+ * manually in that case.
90
+ */
91
+ #ifndef XSIMD_REASSOCIATIVE_MATH
92
+ #if defined(__FAST_MATH__) || defined(__ASSOCIATIVE_MATH__)
93
+ #define XSIMD_REASSOCIATIVE_MATH 1
94
+ #else
95
+ #define XSIMD_REASSOCIATIVE_MATH 0
96
+ #endif
97
+ #endif
98
+
99
+ /**
100
+ * @ingroup xsimd_config_macro
101
+ *
102
+ * Set to 1 if SSE2 is available at compile-time, to 0 otherwise.
103
+ */
104
+ #ifdef __SSE2__
105
+ #define XSIMD_WITH_SSE2 1
106
+ #else
107
+ #define XSIMD_WITH_SSE2 0
108
+ #endif
109
+
110
+ /**
111
+ * @ingroup xsimd_config_macro
112
+ *
113
+ * Set to 1 if SSE3 is available at compile-time, to 0 otherwise.
114
+ */
115
+ #ifdef __SSE3__
116
+ #define XSIMD_WITH_SSE3 1
117
+ #else
118
+ #define XSIMD_WITH_SSE3 0
119
+ #endif
120
+
121
+ /**
122
+ * @ingroup xsimd_config_macro
123
+ *
124
+ * Set to 1 if SSSE3 is available at compile-time, to 0 otherwise.
125
+ */
126
+ #ifdef __SSSE3__
127
+ #define XSIMD_WITH_SSSE3 1
128
+ #else
129
+ #define XSIMD_WITH_SSSE3 0
130
+ #endif
131
+
132
+ /**
133
+ * @ingroup xsimd_config_macro
134
+ *
135
+ * Set to 1 if SSE4.1 is available at compile-time, to 0 otherwise.
136
+ */
137
+ #ifdef __SSE4_1__
138
+ #define XSIMD_WITH_SSE4_1 1
139
+ #else
140
+ #define XSIMD_WITH_SSE4_1 0
141
+ #endif
142
+
143
+ /**
144
+ * @ingroup xsimd_config_macro
145
+ *
146
+ * Set to 1 if SSE4.2 is available at compile-time, to 0 otherwise.
147
+ */
148
+ #ifdef __SSE4_2__
149
+ #define XSIMD_WITH_SSE4_2 1
150
+ #else
151
+ #define XSIMD_WITH_SSE4_2 0
152
+ #endif
153
+
154
+ /**
155
+ * @ingroup xsimd_config_macro
156
+ *
157
+ * Set to 1 if AVX is available at compile-time, to 0 otherwise.
158
+ */
159
+ #ifdef __AVX__
160
+ #define XSIMD_WITH_AVX 1
161
+ #else
162
+ #define XSIMD_WITH_AVX 0
163
+ #endif
164
+
165
+ /**
166
+ * @ingroup xsimd_config_macro
167
+ *
168
+ * Set to 1 if AVX2 is available at compile-time, to 0 otherwise.
169
+ */
170
+ #ifdef __AVX2__
171
+ #define XSIMD_WITH_AVX2 1
172
+ #else
173
+ #define XSIMD_WITH_AVX2 0
174
+ #endif
175
+
176
+ /**
177
+ * @ingroup xsimd_config_macro
178
+ *
179
+ * Set to 1 if AVXVNNI is available at compile-time, to 0 otherwise.
180
+ */
181
+ #ifdef __AVXVNNI__
182
+ #define XSIMD_WITH_AVXVNNI 1
183
+ #else
184
+ #define XSIMD_WITH_AVXVNNI 0
185
+ #endif
186
+
187
+ /**
188
+ * @ingroup xsimd_config_macro
189
+ *
190
+ * Set to 1 if FMA3 for SSE is available at compile-time, to 0 otherwise.
191
+ */
192
+ #ifdef __FMA__
193
+
194
+ #if defined(__SSE__)
195
+ #ifndef XSIMD_WITH_FMA3_SSE // Leave the opportunity to manually disable it, see #643
196
+ #define XSIMD_WITH_FMA3_SSE 1
197
+ #endif
198
+ #else
199
+
200
+ #if XSIMD_WITH_FMA3_SSE
201
+ #error "Manually set XSIMD_WITH_FMA3_SSE is incompatible with current compiler flags"
202
+ #endif
203
+
204
+ #define XSIMD_WITH_FMA3_SSE 0
205
+ #endif
206
+
207
+ #else
208
+
209
+ #if XSIMD_WITH_FMA3_SSE
210
+ #error "Manually set XSIMD_WITH_FMA3_SSE is incompatible with current compiler flags"
211
+ #endif
212
+
213
+ #define XSIMD_WITH_FMA3_SSE 0
214
+ #endif
215
+
216
+ /**
217
+ * @ingroup xsimd_config_macro
218
+ *
219
+ * Set to 1 if FMA3 for AVX is available at compile-time, to 0 otherwise.
220
+ */
221
+ #ifdef __FMA__
222
+
223
+ #if defined(__AVX__)
224
+ #ifndef XSIMD_WITH_FMA3_AVX // Leave the opportunity to manually disable it, see #643
225
+ #define XSIMD_WITH_FMA3_AVX 1
226
+ #endif
227
+ #else
228
+
229
+ #if XSIMD_WITH_FMA3_AVX
230
+ #error "Manually set XSIMD_WITH_FMA3_AVX is incompatible with current compiler flags"
231
+ #endif
232
+
233
+ #define XSIMD_WITH_FMA3_AVX 0
234
+ #endif
235
+
236
+ #if defined(__AVX2__)
237
+ #ifndef XSIMD_WITH_FMA3_AVX2 // Leave the opportunity to manually disable it, see #643
238
+ #define XSIMD_WITH_FMA3_AVX2 1
239
+ #endif
240
+ #else
241
+
242
+ #if XSIMD_WITH_FMA3_AVX2
243
+ #error "Manually set XSIMD_WITH_FMA3_AVX2 is incompatible with current compiler flags"
244
+ #endif
245
+
246
+ #define XSIMD_WITH_FMA3_AVX2 0
247
+ #endif
248
+
249
+ #else
250
+
251
+ #if XSIMD_WITH_FMA3_AVX
252
+ #error "Manually set XSIMD_WITH_FMA3_AVX is incompatible with current compiler flags"
253
+ #endif
254
+
255
+ #if XSIMD_WITH_FMA3_AVX2
256
+ #error "Manually set XSIMD_WITH_FMA3_AVX2 is incompatible with current compiler flags"
257
+ #endif
258
+
259
+ #define XSIMD_WITH_FMA3_AVX 0
260
+ #define XSIMD_WITH_FMA3_AVX2 0
261
+
262
+ #endif
263
+
264
+ /**
265
+ * @ingroup xsimd_config_macro
266
+ *
267
+ * Set to 1 if FMA4 is available at compile-time, to 0 otherwise.
268
+ */
269
+ #ifdef __FMA4__
270
+ #define XSIMD_WITH_FMA4 1
271
+ #else
272
+ #define XSIMD_WITH_FMA4 0
273
+ #endif
274
+
275
+ /**
276
+ * @ingroup xsimd_config_macro
277
+ *
278
+ * Set to 1 if AVX512F is available at compile-time, to 0 otherwise.
279
+ */
280
+ #ifdef __AVX512F__
281
+ // AVX512 instructions are supported starting with gcc 6
282
+ // see https://www.gnu.org/software/gcc/gcc-6/changes.html
283
+ // check clang first, newer clang always defines __GNUC__ = 4
284
+ #if defined(__clang__) && __clang_major__ >= 6
285
+ #define XSIMD_WITH_AVX512F 1
286
+ #elif defined(__GNUC__) && __GNUC__ < 6
287
+ #define XSIMD_WITH_AVX512F 0
288
+ #else
289
+ #define XSIMD_WITH_AVX512F 1
290
+ #if __GNUC__ == 6
291
+ #define XSIMD_AVX512_SHIFT_INTRINSICS_IMM_ONLY 1
292
+ #endif
293
+ #endif
294
+ #else
295
+ #define XSIMD_WITH_AVX512F 0
296
+ #endif
297
+
298
+ /**
299
+ * @ingroup xsimd_config_macro
300
+ *
301
+ * Set to 1 if AVX512CD is available at compile-time, to 0 otherwise.
302
+ */
303
+ #ifdef __AVX512CD__
304
+ // Avoids repeating the GCC workaround over and over
305
+ #define XSIMD_WITH_AVX512CD XSIMD_WITH_AVX512F
306
+ #else
307
+ #define XSIMD_WITH_AVX512CD 0
308
+ #endif
309
+
310
+ /**
311
+ * @ingroup xsimd_config_macro
312
+ *
313
+ * Set to 1 if AVX512DQ is available at compile-time, to 0 otherwise.
314
+ */
315
+ #ifdef __AVX512DQ__
316
+ #define XSIMD_WITH_AVX512DQ XSIMD_WITH_AVX512F
317
+ #else
318
+ #define XSIMD_WITH_AVX512DQ 0
319
+ #endif
320
+
321
+ /**
322
+ * @ingroup xsimd_config_macro
323
+ *
324
+ * Set to 1 if AVX512BW is available at compile-time, to 0 otherwise.
325
+ */
326
+ #ifdef __AVX512BW__
327
+ #define XSIMD_WITH_AVX512BW XSIMD_WITH_AVX512F
328
+ #else
329
+ #define XSIMD_WITH_AVX512BW 0
330
+ #endif
331
+
332
+ /**
333
+ * @ingroup xsimd_config_macro
334
+ *
335
+ * Set to 1 if AVX512ER is available at compile-time, to 0 otherwise.
336
+ */
337
+ #ifdef __AVX512ER__
338
+ #define XSIMD_WITH_AVX512ER XSIMD_WITH_AVX512F
339
+ #else
340
+ #define XSIMD_WITH_AVX512ER 0
341
+ #endif
342
+
343
+ /**
344
+ * @ingroup xsimd_config_macro
345
+ *
346
+ * Set to 1 if AVX512PF is available at compile-time, to 0 otherwise.
347
+ */
348
+ #ifdef __AVX512PF__
349
+ #define XSIMD_WITH_AVX512PF XSIMD_WITH_AVX512F
350
+ #else
351
+ #define XSIMD_WITH_AVX512PF 0
352
+ #endif
353
+
354
+ /**
355
+ * @ingroup xsimd_config_macro
356
+ *
357
+ * Set to 1 if AVX512IFMA is available at compile-time, to 0 otherwise.
358
+ */
359
+ #ifdef __AVX512IFMA__
360
+ #define XSIMD_WITH_AVX512IFMA XSIMD_WITH_AVX512F
361
+ #else
362
+ #define XSIMD_WITH_AVX512IFMA 0
363
+ #endif
364
+
365
+ /**
366
+ * @ingroup xsimd_config_macro
367
+ *
368
+ * Set to 1 if AVX512VBMI is available at compile-time, to 0 otherwise.
369
+ */
370
+ #ifdef __AVX512VBMI__
371
+ #define XSIMD_WITH_AVX512VBMI XSIMD_WITH_AVX512F
372
+ #else
373
+ #define XSIMD_WITH_AVX512VBMI 0
374
+ #endif
375
+
376
+ /**
377
+ * @ingroup xsimd_config_macro
378
+ *
379
+ * Set to 1 if AVX512VBMI2 is available at compile-time, to 0 otherwise.
380
+ */
381
+ #ifdef __AVX512VBMI2__
382
+ #define XSIMD_WITH_AVX512VBMI2 XSIMD_WITH_AVX512F
383
+ #else
384
+ #define XSIMD_WITH_AVX512VBMI2 0
385
+ #endif
386
+
387
+ /**
388
+ * @ingroup xsimd_config_macro
389
+ *
390
+ * Set to 1 if AVX512VNNI is available at compile-time, to 0 otherwise.
391
+ */
392
+ #ifdef __AVX512VNNI__
393
+
394
+ #if XSIMD_WITH_AVX512VBMI2
395
+ #define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 XSIMD_WITH_AVX512F
396
+ #define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F
397
+ #else
398
+ #define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0
399
+ #define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F
400
+ #endif
401
+
402
+ #else
403
+
404
+ #define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0
405
+ #define XSIMD_WITH_AVX512VNNI_AVX512BW 0
406
+
407
+ #endif
408
+
409
+ /**
410
+ * @ingroup xsimd_config_macro
411
+ *
412
+ * Set to 1 if the target is in the ARM architecture family in 64 bits, to 0 otherwise
413
+ */
414
+ #if defined(__aarch64__) || defined(_M_ARM64)
415
+ #define XSIMD_TARGET_ARM64 1
416
+ #else
417
+ #define XSIMD_TARGET_ARM64 0
418
+ #endif
419
+
420
+ /**
421
+ * @ingroup xsimd_config_macro
422
+ *
423
+ * Set to 1 if the target is in the ARM architecture family, to 0 otherwise
424
+ */
425
+ #if defined(__arm__) || defined(_M_ARM) || XSIMD_TARGET_ARM64
426
+ #define XSIMD_TARGET_ARM 1
427
+ #else
428
+ #define XSIMD_TARGET_ARM 0
429
+ #endif
430
+
431
+ /**
432
+ * @ingroup xsimd_config_macro
433
+ *
434
+ * Set to 1 if NEON is available at compile-time, to 0 otherwise.
435
+ */
436
+ #if (defined(__ARM_NEON) && (__ARM_ARCH >= 7)) || XSIMD_TARGET_ARM64
437
+ #define XSIMD_WITH_NEON 1
438
+ #else
439
+ #define XSIMD_WITH_NEON 0
440
+ #endif
441
+
442
+ // Neon is always available on Arm64, though it is theoritially possible to compile
443
+ // without it, such as -march=armv8-a+nosimd.
444
+ // Note that MSVC may never define __ARM_NEON even when available.
445
+ /**
446
+ * @ingroup xsimd_config_macro
447
+ *
448
+ * Set to 1 if NEON64 is available at compile-time, to 0 otherwise.
449
+ */
450
+ #if XSIMD_TARGET_ARM64
451
+ #define XSIMD_WITH_NEON64 1
452
+ #else
453
+ #define XSIMD_WITH_NEON64 0
454
+ #endif
455
+
456
+ /**
457
+ * @ingroup xsimd_config_macro
458
+ *
459
+ * Set to 1 if i8mm neon64 extension is available at compile-time, to 0 otherwise.
460
+ */
461
+ #if defined(__ARM_FEATURE_MATMUL_INT8)
462
+ #define XSIMD_WITH_I8MM_NEON64 1
463
+ #else
464
+ #define XSIMD_WITH_I8MM_NEON64 0
465
+ #endif
466
+
467
+ /**
468
+ * @ingroup xsimd_config_macro
469
+ *
470
+ * Set to 1 if SVE is available and bit width is pre-set at compile-time, to 0 otherwise.
471
+ */
472
+ #if defined(__ARM_FEATURE_SVE) && defined(__ARM_FEATURE_SVE_BITS) && __ARM_FEATURE_SVE_BITS > 0
473
+ #define XSIMD_WITH_SVE 1
474
+ #define XSIMD_SVE_BITS __ARM_FEATURE_SVE_BITS
475
+ #else
476
+ #define XSIMD_WITH_SVE 0
477
+ #define XSIMD_SVE_BITS 0
478
+ #endif
479
+
480
+ /**
481
+ * @ingroup xsimd_config_macro
482
+ *
483
+ * Set to 1 if the target is the RISC-V architecture family.
484
+ */
485
+ #ifdef __riscv
486
+ #define XSIMD_TARGET_RISCV 1
487
+ #else
488
+ #define XSIMD_TARGET_RISCV 0
489
+ #endif
490
+
491
+ /**
492
+ * @ingroup xsimd_config_macro
493
+ *
494
+ * Set to 1 if RVV is available and bit width is pre-set at compile-time, to 0 otherwise.
495
+ */
496
+ #if defined(__riscv_vector) && defined(__riscv_v_fixed_vlen) && __riscv_v_fixed_vlen > 0
497
+ #define XSIMD_WITH_RVV 1
498
+ #define XSIMD_RVV_BITS __riscv_v_fixed_vlen
499
+ #else
500
+ #define XSIMD_WITH_RVV 0
501
+ #define XSIMD_RVV_BITS 0
502
+ #endif
503
+
504
+ /**
505
+ * @ingroup xsimd_config_macro
506
+ *
507
+ * Set to 1 if WebAssembly SIMD is available at compile-time, to 0 otherwise.
508
+ */
509
+ #ifdef __EMSCRIPTEN__
510
+ #define XSIMD_WITH_WASM 1
511
+ #else
512
+ #define XSIMD_WITH_WASM 0
513
+ #endif
514
+
515
+ /**
516
+ * @ingroup xsimd_config_macro
517
+ *
518
+ * Set to 1 if the target is in the PowerPC architecture family, to 0 otherwise
519
+ */
520
+ #if defined(__powerpc__) || defined(__powerpc64__) || defined(_ARCH_PPC) || defined(_ARCH_PPC64)
521
+ #define XSIMD_TARGET_PPC 1
522
+ #else
523
+ #define XSIMD_TARGET_PPC 0
524
+ #endif
525
+
526
+ /**
527
+ * @ingroup xsimd_config_macro
528
+ *
529
+ * Set to 1 if VMX with VSX extension is available at compile-time, to 0 otherwise.
530
+ */
531
+ #if defined(__VEC__) && defined(__VSX__)
532
+ #define XSIMD_WITH_VSX 1
533
+ #else
534
+ #define XSIMD_WITH_VSX 0
535
+ #endif
536
+
537
+ /**
538
+ * @ingroup xsimd_config_macro
539
+ *
540
+ * Set to 1 if the target is in the IBM Z architecture family, to 0 otherwise
541
+ */
542
+ #if defined(__s390x__)
543
+ #define XSIMD_TARGET_S390X 1
544
+ #else
545
+ #define XSIMD_TARGET_S390X 0
546
+ #endif
547
+
548
+ /**
549
+ + * @ingroup xsimd_config_macro
550
+ + *
551
+ + * Set to 1 if s390x VXE is available at compile-time, to 0 otherwise.
552
+ + * Float vectors have been introduced with VXE included with IBM z14.
553
+ + */
554
+ #if defined(__VEC__) && __VEC__ >= 10304 && __ARCH__ >= 12
555
+ #define XSIMD_WITH_VXE 1
556
+ #else
557
+ #define XSIMD_WITH_VXE 0
558
+ #endif
559
+
560
+ // Workaround for MSVC compiler
561
+ #ifdef _MSC_VER
562
+
563
+ #if XSIMD_WITH_AVX512
564
+
565
+ #undef XSIMD_WITH_AVX2
566
+ #define XSIMD_WITH_AVX2 1
567
+
568
+ #endif
569
+
570
+ #if XSIMD_WITH_AVX2
571
+
572
+ #undef XSIMD_WITH_AVX
573
+ #define XSIMD_WITH_AVX 1
574
+
575
+ #undef XSIMD_WITH_FMA3_AVX
576
+ #define XSIMD_WITH_FMA3_AVX 1
577
+
578
+ #undef XSIMD_WITH_FMA3_AVX2
579
+ #define XSIMD_WITH_FMA3_AVX2 1
580
+
581
+ #endif
582
+
583
+ #if XSIMD_WITH_AVX
584
+
585
+ #undef XSIMD_WITH_SSE4_2
586
+ #define XSIMD_WITH_SSE4_2 1
587
+
588
+ #endif
589
+
590
+ #if XSIMD_WITH_SSE4_2
591
+
592
+ #undef XSIMD_WITH_SSE4_1
593
+ #define XSIMD_WITH_SSE4_1 1
594
+
595
+ #endif
596
+
597
+ #if XSIMD_WITH_SSE4_1
598
+
599
+ #undef XSIMD_WITH_SSSE3
600
+ #define XSIMD_WITH_SSSE3 1
601
+
602
+ #endif
603
+
604
+ #if XSIMD_WITH_SSSE3
605
+
606
+ #undef XSIMD_WITH_SSE3
607
+ #define XSIMD_WITH_SSE3 1
608
+
609
+ #endif
610
+
611
+ #if XSIMD_WITH_SSE3 || ((defined(_M_AMD64) || defined(_M_X64)) && !defined(_M_ARM64EC)) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
612
+ #undef XSIMD_WITH_SSE2
613
+ #define XSIMD_WITH_SSE2 1
614
+ #endif
615
+
616
+ #endif
617
+
618
+ #if !XSIMD_WITH_SSE2 && !XSIMD_WITH_SSE3 && !XSIMD_WITH_SSSE3 && !XSIMD_WITH_SSE4_1 && !XSIMD_WITH_SSE4_2 && !XSIMD_WITH_AVX && !XSIMD_WITH_AVX2 && !XSIMD_WITH_AVXVNNI && !XSIMD_WITH_FMA3_SSE && !XSIMD_WITH_FMA4 && !XSIMD_WITH_FMA3_AVX && !XSIMD_WITH_FMA3_AVX2 && !XSIMD_WITH_AVX512F && !XSIMD_WITH_AVX512CD && !XSIMD_WITH_AVX512DQ && !XSIMD_WITH_AVX512BW && !XSIMD_WITH_AVX512ER && !XSIMD_WITH_AVX512PF && !XSIMD_WITH_AVX512IFMA && !XSIMD_WITH_AVX512VBMI && !XSIMD_WITH_AVX512VBMI2 && !XSIMD_WITH_NEON && !XSIMD_WITH_NEON64 && !XSIMD_WITH_SVE && !XSIMD_WITH_RVV && !XSIMD_WITH_WASM && !XSIMD_WITH_VSX && !XSIMD_WITH_EMULATED && !XSIMD_WITH_VXE
619
+ #define XSIMD_NO_SUPPORTED_ARCHITECTURE
620
+ #endif
621
+
622
+ /**
623
+ * @ingroup xsimd_config_macro
624
+ *
625
+ * Set to 1 if the target is a linux
626
+ */
627
+ #if defined(__linux__) && (!defined(__ANDROID_API__) || __ANDROID_API__ >= 18)
628
+ #define XSIMD_HAVE_LINUX_GETAUXVAL 1
629
+ #else
630
+ #define XSIMD_HAVE_LINUX_GETAUXVAL 0
631
+ #endif
632
+
633
+ #endif
@@ -0,0 +1,50 @@
1
+ /***************************************************************************
2
+ * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and *
3
+ * Martin Renou *
4
+ * Copyright (c) QuantStack *
5
+ * Copyright (c) Serge Guelton *
6
+ * *
7
+ * Distributed under the terms of the BSD 3-Clause License. *
8
+ * *
9
+ * The full license is in the file LICENSE, distributed with this software. *
10
+ ****************************************************************************/
11
+
12
+ #ifndef XSIMD_CPU_FEATURES_HPP
13
+ #define XSIMD_CPU_FEATURES_HPP
14
+
15
+ #include "./xsimd_cpu_features_arm.hpp"
16
+ #include "./xsimd_cpu_features_ppc.hpp"
17
+ #include "./xsimd_cpu_features_riscv.hpp"
18
+ #include "./xsimd_cpu_features_s390x.hpp"
19
+ #include "./xsimd_cpu_features_x86.hpp"
20
+
21
+ namespace xsimd
22
+ {
23
+
24
+ /**
25
+ * Cross-platform CPU feature detection class.
26
+ *
27
+ * All member functions are safe to work on with all platforms.
28
+ *
29
+ * @warning This class is *not* thread safe.
30
+ * Its internal lazy querying structure makes even `const` member function prone to data race.
31
+ * The structure is also generally not appropriate for directly branching (e.g. on
32
+ * ``cpu_features::avx2``) because it include a branch that the compiler cannot optimize.
33
+ * The current appropriate way to use this class for dynamic dispatching is to store the
34
+ * result of the function calls (e.g. @ref cpu_features) into (static) constants.
35
+ * This is done in @ref xsimd::available_architectures.
36
+ *
37
+ * @see xsimd::dispatch
38
+ * @see xsimd::available_architectures
39
+ */
40
+ class cpu_features : public s390x_cpu_features,
41
+ public ppc_cpu_features,
42
+ public riscv_cpu_features,
43
+ public arm_cpu_features,
44
+ public x86_cpu_features
45
+ {
46
+ };
47
+
48
+ }
49
+
50
+ #endif