react-native-executorch 0.4.8 → 0.5.1-rc.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 (1021) hide show
  1. package/android/CMakeLists.txt +17 -0
  2. package/android/build.gradle +76 -13
  3. package/android/libs/classes.jar +0 -0
  4. package/android/src/main/cpp/CMakeLists.txt +73 -0
  5. package/android/src/main/cpp/ETInstallerModule.cpp +76 -0
  6. package/android/src/main/cpp/ETInstallerModule.h +43 -0
  7. package/android/src/main/java/com/swmansion/rnexecutorch/ETInstaller.kt +66 -0
  8. package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +3 -3
  9. package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +7 -113
  10. package/common/ada/ada.cpp +17406 -0
  11. package/common/ada/ada.h +10274 -0
  12. package/common/pfft/pfft.c +2205 -0
  13. package/common/pfft/pfft.h +185 -0
  14. package/common/rnexecutorch/Log.h +489 -0
  15. package/common/rnexecutorch/RnExecutorchInstaller.cpp +78 -0
  16. package/common/rnexecutorch/RnExecutorchInstaller.h +112 -0
  17. package/common/rnexecutorch/TokenizerModule.cpp +52 -0
  18. package/common/rnexecutorch/TokenizerModule.h +26 -0
  19. package/common/rnexecutorch/data_processing/FFT.cpp +21 -0
  20. package/common/rnexecutorch/data_processing/FFT.h +23 -0
  21. package/common/rnexecutorch/data_processing/FileUtils.h +30 -0
  22. package/common/rnexecutorch/data_processing/ImageProcessing.cpp +240 -0
  23. package/common/rnexecutorch/data_processing/ImageProcessing.h +55 -0
  24. package/common/rnexecutorch/data_processing/Numerical.cpp +82 -0
  25. package/common/rnexecutorch/data_processing/Numerical.h +23 -0
  26. package/common/rnexecutorch/data_processing/base64.cpp +110 -0
  27. package/common/rnexecutorch/data_processing/base64.h +46 -0
  28. package/common/rnexecutorch/data_processing/dsp.cpp +65 -0
  29. package/common/rnexecutorch/data_processing/dsp.h +12 -0
  30. package/common/rnexecutorch/host_objects/JSTensorViewIn.h +12 -0
  31. package/common/rnexecutorch/host_objects/JSTensorViewOut.h +22 -0
  32. package/common/rnexecutorch/host_objects/JsiConversions.h +410 -0
  33. package/common/rnexecutorch/host_objects/ModelHostObject.h +239 -0
  34. package/common/rnexecutorch/jsi/JsiHostObject.cpp +108 -0
  35. package/common/rnexecutorch/jsi/JsiHostObject.h +87 -0
  36. package/common/rnexecutorch/jsi/OwningArrayBuffer.h +40 -0
  37. package/common/rnexecutorch/jsi/Promise.cpp +20 -0
  38. package/common/rnexecutorch/jsi/Promise.h +69 -0
  39. package/common/rnexecutorch/jsi/RuntimeAwareCache.h +58 -0
  40. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.cpp +53 -0
  41. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.h +35 -0
  42. package/common/rnexecutorch/metaprogramming/ConstructorHelpers.h +131 -0
  43. package/common/rnexecutorch/metaprogramming/FunctionHelpers.h +50 -0
  44. package/common/rnexecutorch/metaprogramming/TypeConcepts.h +37 -0
  45. package/common/rnexecutorch/models/BaseModel.cpp +181 -0
  46. package/common/rnexecutorch/models/BaseModel.h +47 -0
  47. package/common/rnexecutorch/models/EncoderDecoderBase.cpp +21 -0
  48. package/common/rnexecutorch/models/EncoderDecoderBase.h +31 -0
  49. package/common/rnexecutorch/models/classification/Classification.cpp +72 -0
  50. package/common/rnexecutorch/models/classification/Classification.h +26 -0
  51. package/{ios/RnExecutorch/models/classification/Constants.mm → common/rnexecutorch/models/classification/Constants.h} +7 -2
  52. package/common/rnexecutorch/models/embeddings/BaseEmbeddings.cpp +27 -0
  53. package/common/rnexecutorch/models/embeddings/BaseEmbeddings.h +17 -0
  54. package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.cpp +45 -0
  55. package/common/rnexecutorch/models/embeddings/image/ImageEmbeddings.h +23 -0
  56. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.cpp +61 -0
  57. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.h +26 -0
  58. package/{ios/RnExecutorch/models/image_segmentation/Constants.mm → common/rnexecutorch/models/image_segmentation/Constants.h} +7 -2
  59. package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.cpp +173 -0
  60. package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.h +43 -0
  61. package/{ios/RnExecutorch/utils/Constants.mm → common/rnexecutorch/models/object_detection/Constants.h} +9 -2
  62. package/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +82 -0
  63. package/common/rnexecutorch/models/object_detection/ObjectDetection.h +31 -0
  64. package/{ios/RnExecutorch/utils/ObjectDetectionUtils.mm → common/rnexecutorch/models/object_detection/Utils.cpp} +10 -30
  65. package/common/rnexecutorch/models/object_detection/Utils.h +17 -0
  66. package/common/rnexecutorch/models/ocr/CTCLabelConverter.cpp +88 -0
  67. package/common/rnexecutorch/models/ocr/CTCLabelConverter.h +29 -0
  68. package/common/rnexecutorch/models/ocr/Constants.h +34 -0
  69. package/common/rnexecutorch/models/ocr/Detector.cpp +102 -0
  70. package/common/rnexecutorch/models/ocr/Detector.h +30 -0
  71. package/common/rnexecutorch/models/ocr/DetectorUtils.cpp +703 -0
  72. package/common/rnexecutorch/models/ocr/DetectorUtils.h +80 -0
  73. package/common/rnexecutorch/models/ocr/OCR.cpp +52 -0
  74. package/common/rnexecutorch/models/ocr/OCR.h +36 -0
  75. package/common/rnexecutorch/models/ocr/RecognitionHandler.cpp +107 -0
  76. package/common/rnexecutorch/models/ocr/RecognitionHandler.h +40 -0
  77. package/common/rnexecutorch/models/ocr/RecognitionHandlerUtils.cpp +153 -0
  78. package/common/rnexecutorch/models/ocr/RecognitionHandlerUtils.h +72 -0
  79. package/common/rnexecutorch/models/ocr/Recognizer.cpp +80 -0
  80. package/common/rnexecutorch/models/ocr/Recognizer.h +36 -0
  81. package/common/rnexecutorch/models/ocr/RecognizerUtils.cpp +202 -0
  82. package/common/rnexecutorch/models/ocr/RecognizerUtils.h +70 -0
  83. package/common/rnexecutorch/models/ocr/Types.h +37 -0
  84. package/common/rnexecutorch/models/speech_to_text/MoonshineStrategy.cpp +31 -0
  85. package/common/rnexecutorch/models/speech_to_text/MoonshineStrategy.h +21 -0
  86. package/common/rnexecutorch/models/speech_to_text/SpeechToText.cpp +70 -0
  87. package/common/rnexecutorch/models/speech_to_text/SpeechToText.h +31 -0
  88. package/common/rnexecutorch/models/speech_to_text/SpeechToTextStrategy.h +26 -0
  89. package/common/rnexecutorch/models/speech_to_text/WhisperStrategy.cpp +38 -0
  90. package/common/rnexecutorch/models/speech_to_text/WhisperStrategy.h +25 -0
  91. package/common/rnexecutorch/models/style_transfer/StyleTransfer.cpp +55 -0
  92. package/common/rnexecutorch/models/style_transfer/StyleTransfer.h +29 -0
  93. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.cpp +92 -0
  94. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.h +49 -0
  95. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.cpp +180 -0
  96. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.h +78 -0
  97. package/common/rnexecutorch/tests/LogTest.cpp +530 -0
  98. package/common/rnexecutorch/tests/README.md +20 -0
  99. package/common/rnexecutorch/tests/run_all_tests.sh +14 -0
  100. package/common/rnexecutorch/tests/run_test.sh +18 -0
  101. package/ios/ExecutorchLib.xcframework/Info.plist +4 -4
  102. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  103. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  104. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  105. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  106. package/ios/RnExecutorch/ETInstaller.h +8 -0
  107. package/ios/RnExecutorch/ETInstaller.mm +56 -0
  108. package/ios/RnExecutorch/utils/Conversions.h +8 -9
  109. package/ios/RnExecutorch/utils/Numerical.h +2 -0
  110. package/ios/RnExecutorch.xcodeproj/project.pbxproj +73 -0
  111. package/lib/common/Logger.d.ts +8 -0
  112. package/lib/common/Logger.js +19 -0
  113. package/lib/constants/modelUrls.d.ts +89 -0
  114. package/lib/constants/modelUrls.js +116 -0
  115. package/lib/constants/sttDefaults.js +66 -0
  116. package/lib/controllers/LLMController.js +210 -0
  117. package/lib/controllers/OCRController.js +65 -0
  118. package/lib/controllers/SpeechToTextController.d.ts +52 -0
  119. package/lib/controllers/SpeechToTextController.js +343 -0
  120. package/lib/hooks/natural_language_processing/useSpeechToText.js +44 -0
  121. package/lib/index.d.ts +50 -0
  122. package/{src/index.tsx → lib/index.js} +22 -10
  123. package/lib/module/Error.js +2 -0
  124. package/lib/module/Error.js.map +1 -1
  125. package/lib/module/common/Logger.js +23 -0
  126. package/lib/module/common/Logger.js.map +1 -0
  127. package/lib/module/constants/llmDefaults.js +8 -0
  128. package/lib/module/constants/llmDefaults.js.map +1 -1
  129. package/lib/module/constants/modelUrls.js +300 -84
  130. package/lib/module/constants/modelUrls.js.map +1 -1
  131. package/lib/module/constants/ocr/models.js +181 -286
  132. package/lib/module/constants/ocr/models.js.map +1 -1
  133. package/lib/module/constants/ocr/symbols.js +63 -63
  134. package/lib/module/constants/sttDefaults.js +12 -10
  135. package/lib/module/constants/sttDefaults.js.map +1 -1
  136. package/lib/module/controllers/LLMController.js +17 -11
  137. package/lib/module/controllers/LLMController.js.map +1 -1
  138. package/lib/module/controllers/OCRController.js +16 -9
  139. package/lib/module/controllers/OCRController.js.map +1 -1
  140. package/lib/module/controllers/SpeechToTextController.js +32 -19
  141. package/lib/module/controllers/SpeechToTextController.js.map +1 -1
  142. package/lib/module/controllers/VerticalOCRController.js +16 -9
  143. package/lib/module/controllers/VerticalOCRController.js.map +1 -1
  144. package/lib/module/hooks/computer_vision/useClassification.js +5 -5
  145. package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
  146. package/lib/module/hooks/computer_vision/useImageEmbeddings.js +13 -0
  147. package/lib/module/hooks/computer_vision/useImageEmbeddings.js.map +1 -0
  148. package/lib/module/hooks/computer_vision/useImageSegmentation.js +4 -4
  149. package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -1
  150. package/lib/module/hooks/computer_vision/useOCR.js +14 -15
  151. package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
  152. package/lib/module/hooks/computer_vision/useObjectDetection.js +5 -5
  153. package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
  154. package/lib/module/hooks/computer_vision/useStyleTransfer.js +5 -5
  155. package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
  156. package/lib/module/hooks/computer_vision/useVerticalOCR.js +16 -17
  157. package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
  158. package/lib/module/hooks/general/useExecutorchModule.js +5 -3
  159. package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
  160. package/lib/module/hooks/natural_language_processing/useLLM.js +22 -25
  161. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  162. package/lib/module/hooks/natural_language_processing/useSpeechToText.js +16 -14
  163. package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
  164. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +4 -5
  165. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -1
  166. package/lib/module/hooks/natural_language_processing/useTokenizer.js +20 -19
  167. package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -1
  168. package/lib/module/hooks/useNonStaticModule.js +52 -0
  169. package/lib/module/hooks/useNonStaticModule.js.map +1 -0
  170. package/lib/module/index.js +16 -2
  171. package/lib/module/index.js.map +1 -1
  172. package/lib/module/modules/BaseModule.js +6 -3
  173. package/lib/module/modules/BaseModule.js.map +1 -1
  174. package/lib/module/modules/BaseNonStaticModule.js +17 -0
  175. package/lib/module/modules/BaseNonStaticModule.js.map +1 -0
  176. package/lib/module/modules/computer_vision/ClassificationModule.js +13 -8
  177. package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
  178. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js +19 -0
  179. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js.map +1 -0
  180. package/lib/module/modules/computer_vision/ImageSegmentationModule.js +21 -19
  181. package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -1
  182. package/lib/module/modules/computer_vision/OCRModule.js +13 -10
  183. package/lib/module/modules/computer_vision/OCRModule.js.map +1 -1
  184. package/lib/module/modules/computer_vision/ObjectDetectionModule.js +13 -8
  185. package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
  186. package/lib/module/modules/computer_vision/StyleTransferModule.js +13 -8
  187. package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
  188. package/lib/module/modules/computer_vision/VerticalOCRModule.js +15 -10
  189. package/lib/module/modules/computer_vision/VerticalOCRModule.js.map +1 -1
  190. package/lib/module/modules/general/ExecutorchModule.js +10 -36
  191. package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
  192. package/lib/module/modules/natural_language_processing/LLMModule.js +18 -22
  193. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  194. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +27 -16
  195. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
  196. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +15 -8
  197. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -1
  198. package/lib/module/modules/natural_language_processing/TokenizerModule.js +20 -14
  199. package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -1
  200. package/lib/module/native/NativeETInstaller.js +5 -0
  201. package/lib/module/native/NativeETInstaller.js.map +1 -0
  202. package/lib/module/native/RnExecutorchModules.js +2 -11
  203. package/lib/module/native/RnExecutorchModules.js.map +1 -1
  204. package/lib/module/types/common.js +25 -8
  205. package/lib/module/types/common.js.map +1 -1
  206. package/lib/module/types/stt.js +6 -0
  207. package/lib/module/types/stt.js.map +1 -1
  208. package/lib/module/utils/ResourceFetcher.js +276 -114
  209. package/lib/module/utils/ResourceFetcher.js.map +1 -1
  210. package/lib/module/utils/ResourceFetcherUtils.js +155 -0
  211. package/lib/module/utils/ResourceFetcherUtils.js.map +1 -0
  212. package/lib/module/utils/llm.js +41 -1
  213. package/lib/module/utils/llm.js.map +1 -1
  214. package/lib/modules/natural_language_processing/SpeechToTextModule.d.ts +14 -0
  215. package/lib/modules/natural_language_processing/SpeechToTextModule.js +30 -0
  216. package/lib/modules/natural_language_processing/TokenizerModule.js +29 -0
  217. package/lib/native/RnExecutorchModules.d.ts +3 -0
  218. package/lib/native/RnExecutorchModules.js +16 -0
  219. package/lib/typescript/Error.d.ts +2 -0
  220. package/lib/typescript/Error.d.ts.map +1 -1
  221. package/lib/typescript/common/Logger.d.ts +9 -0
  222. package/lib/typescript/common/Logger.d.ts.map +1 -0
  223. package/lib/typescript/constants/llmDefaults.d.ts +1 -0
  224. package/lib/typescript/constants/llmDefaults.d.ts.map +1 -1
  225. package/lib/typescript/constants/modelUrls.d.ts +223 -79
  226. package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
  227. package/lib/typescript/constants/ocr/models.d.ts +882 -284
  228. package/lib/typescript/constants/ocr/models.d.ts.map +1 -1
  229. package/lib/typescript/constants/sttDefaults.d.ts +1 -0
  230. package/lib/typescript/constants/sttDefaults.d.ts.map +1 -1
  231. package/lib/typescript/controllers/LLMController.d.ts +3 -4
  232. package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
  233. package/lib/typescript/controllers/OCRController.d.ts +5 -6
  234. package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
  235. package/lib/typescript/controllers/SpeechToTextController.d.ts +11 -6
  236. package/lib/typescript/controllers/SpeechToTextController.d.ts.map +1 -1
  237. package/lib/typescript/controllers/VerticalOCRController.d.ts +5 -6
  238. package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
  239. package/lib/typescript/hooks/computer_vision/useClassification.d.ts +8 -6
  240. package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
  241. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts +16 -0
  242. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts.map +1 -0
  243. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +5 -3
  244. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -1
  245. package/lib/typescript/hooks/computer_vision/useOCR.d.ts +4 -4
  246. package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
  247. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -3
  248. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
  249. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +5 -3
  250. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
  251. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +3 -5
  252. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
  253. package/lib/typescript/hooks/general/useExecutorchModule.d.ts +1 -1
  254. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -4
  255. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  256. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +7 -5
  257. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
  258. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +9 -5
  259. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -1
  260. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +6 -4
  261. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -1
  262. package/lib/typescript/hooks/useNonStaticModule.d.ts +21 -0
  263. package/lib/typescript/hooks/useNonStaticModule.d.ts.map +1 -0
  264. package/lib/typescript/index.d.ts +18 -2
  265. package/lib/typescript/index.d.ts.map +1 -1
  266. package/lib/typescript/modules/BaseModule.d.ts +1 -1
  267. package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
  268. package/lib/typescript/modules/BaseNonStaticModule.d.ts +10 -0
  269. package/lib/typescript/modules/BaseNonStaticModule.d.ts.map +1 -0
  270. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +6 -6
  271. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
  272. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts +9 -0
  273. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts.map +1 -0
  274. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +8 -28
  275. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -1
  276. package/lib/typescript/modules/computer_vision/OCRModule.d.ts +8 -7
  277. package/lib/typescript/modules/computer_vision/OCRModule.d.ts.map +1 -1
  278. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +7 -5
  279. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
  280. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +6 -5
  281. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
  282. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts +7 -8
  283. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts.map +1 -1
  284. package/lib/typescript/modules/general/ExecutorchModule.d.ts +5 -8
  285. package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
  286. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +16 -16
  287. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  288. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +19 -9
  289. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
  290. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +7 -5
  291. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -1
  292. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +10 -9
  293. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -1
  294. package/lib/typescript/native/{NativeStyleTransfer.d.ts → NativeETInstaller.d.ts} +2 -3
  295. package/lib/typescript/native/NativeETInstaller.d.ts.map +1 -0
  296. package/lib/typescript/native/RnExecutorchModules.d.ts +3 -21
  297. package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
  298. package/lib/typescript/types/common.d.ts +30 -2
  299. package/lib/typescript/types/common.d.ts.map +1 -1
  300. package/lib/typescript/types/stt.d.ts +5 -1
  301. package/lib/typescript/types/stt.d.ts.map +1 -1
  302. package/lib/typescript/utils/ResourceFetcher.d.ts +18 -10
  303. package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -1
  304. package/lib/typescript/utils/ResourceFetcherUtils.d.ts +55 -0
  305. package/lib/typescript/utils/ResourceFetcherUtils.d.ts.map +1 -0
  306. package/lib/typescript/utils/llm.d.ts +4 -0
  307. package/lib/typescript/utils/llm.d.ts.map +1 -1
  308. package/lib/utils/ResourceFetcherUtils.js +119 -0
  309. package/lib/utils/llm.js +72 -0
  310. package/package.json +22 -64
  311. package/react-native-executorch.podspec +75 -3
  312. package/src/Error.ts +2 -0
  313. package/src/common/Logger.ts +25 -0
  314. package/src/constants/llmDefaults.ts +11 -0
  315. package/src/constants/modelUrls.ts +365 -168
  316. package/src/constants/ocr/models.ts +826 -395
  317. package/src/constants/ocr/symbols.ts +63 -63
  318. package/src/constants/sttDefaults.ts +14 -18
  319. package/src/controllers/LLMController.ts +28 -18
  320. package/src/controllers/OCRController.ts +24 -15
  321. package/src/controllers/SpeechToTextController.ts +53 -40
  322. package/src/controllers/VerticalOCRController.ts +24 -14
  323. package/src/hooks/computer_vision/useClassification.ts +10 -11
  324. package/src/hooks/computer_vision/useImageEmbeddings.ts +15 -0
  325. package/src/hooks/computer_vision/useImageSegmentation.ts +5 -8
  326. package/src/hooks/computer_vision/useOCR.ts +29 -21
  327. package/src/hooks/computer_vision/useObjectDetection.ts +6 -9
  328. package/src/hooks/computer_vision/useStyleTransfer.ts +6 -6
  329. package/src/hooks/computer_vision/useVerticalOCR.ts +30 -27
  330. package/src/hooks/general/useExecutorchModule.ts +3 -3
  331. package/src/hooks/natural_language_processing/useLLM.ts +38 -28
  332. package/src/hooks/natural_language_processing/useSpeechToText.ts +34 -26
  333. package/src/hooks/natural_language_processing/useTextEmbeddings.ts +11 -11
  334. package/src/hooks/natural_language_processing/useTokenizer.ts +22 -22
  335. package/src/hooks/useNonStaticModule.ts +74 -0
  336. package/src/index.ts +108 -0
  337. package/src/modules/BaseModule.ts +9 -3
  338. package/src/modules/BaseNonStaticModule.ts +26 -0
  339. package/src/modules/computer_vision/ClassificationModule.ts +20 -11
  340. package/src/modules/computer_vision/ImageEmbeddingsModule.ts +26 -0
  341. package/src/modules/computer_vision/ImageSegmentationModule.ts +35 -27
  342. package/src/modules/computer_vision/OCRModule.ts +23 -15
  343. package/src/modules/computer_vision/ObjectDetectionModule.ts +24 -11
  344. package/src/modules/computer_vision/StyleTransferModule.ts +20 -11
  345. package/src/modules/computer_vision/VerticalOCRModule.ts +25 -21
  346. package/src/modules/general/ExecutorchModule.ts +18 -48
  347. package/src/modules/natural_language_processing/LLMModule.ts +27 -30
  348. package/src/modules/natural_language_processing/SpeechToTextModule.ts +42 -37
  349. package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +27 -12
  350. package/src/modules/natural_language_processing/TokenizerModule.ts +27 -17
  351. package/src/native/NativeETInstaller.ts +8 -0
  352. package/src/native/RnExecutorchModules.ts +4 -46
  353. package/src/types/common.ts +40 -12
  354. package/src/types/stt.ts +5 -1
  355. package/src/utils/ResourceFetcher.ts +338 -119
  356. package/src/utils/ResourceFetcherUtils.ts +186 -0
  357. package/src/utils/llm.ts +65 -1
  358. package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
  359. package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
  360. package/third-party/android/libs/opencv/arm64-v8a/libopencv_core.a +0 -0
  361. package/third-party/android/libs/opencv/arm64-v8a/libopencv_features2d.a +0 -0
  362. package/third-party/android/libs/opencv/arm64-v8a/libopencv_highgui.a +0 -0
  363. package/third-party/android/libs/opencv/arm64-v8a/libopencv_imgproc.a +0 -0
  364. package/third-party/android/libs/opencv/arm64-v8a/libopencv_photo.a +0 -0
  365. package/third-party/android/libs/opencv/arm64-v8a/libopencv_video.a +0 -0
  366. package/third-party/android/libs/opencv/x86_64/libopencv_core.a +0 -0
  367. package/third-party/android/libs/opencv/x86_64/libopencv_features2d.a +0 -0
  368. package/third-party/android/libs/opencv/x86_64/libopencv_highgui.a +0 -0
  369. package/third-party/android/libs/opencv/x86_64/libopencv_imgproc.a +0 -0
  370. package/third-party/android/libs/opencv/x86_64/libopencv_photo.a +0 -0
  371. package/third-party/android/libs/opencv/x86_64/libopencv_video.a +0 -0
  372. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv.a +0 -0
  373. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_hal.a +0 -0
  374. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_thread.a +0 -0
  375. package/third-party/include/c10/macros/Export.h +163 -0
  376. package/third-party/include/c10/macros/Macros.h +497 -0
  377. package/third-party/include/c10/util/BFloat16-inl.h +342 -0
  378. package/third-party/include/c10/util/BFloat16-math.h +266 -0
  379. package/third-party/include/c10/util/BFloat16.h +125 -0
  380. package/third-party/include/c10/util/Half-inl.h +347 -0
  381. package/third-party/include/c10/util/Half.h +416 -0
  382. package/third-party/include/c10/util/TypeSafeSignMath.h +133 -0
  383. package/third-party/include/c10/util/bit_cast.h +43 -0
  384. package/third-party/include/c10/util/floating_point_utils.h +33 -0
  385. package/third-party/include/c10/util/irange.h +107 -0
  386. package/third-party/include/executorch/ExecuTorch.h +13 -0
  387. package/third-party/include/executorch/ExecuTorchError.h +16 -0
  388. package/third-party/include/executorch/ExecuTorchLog.h +76 -0
  389. package/third-party/include/executorch/ExecuTorchModule.h +286 -0
  390. package/third-party/include/executorch/ExecuTorchTensor.h +742 -0
  391. package/third-party/include/executorch/ExecuTorchValue.h +219 -0
  392. package/third-party/include/executorch/extension/module/module.h +492 -0
  393. package/third-party/include/executorch/extension/tensor/tensor.h +13 -0
  394. package/third-party/include/executorch/extension/tensor/tensor_accessor.h +190 -0
  395. package/third-party/include/executorch/extension/tensor/tensor_ptr.h +347 -0
  396. package/third-party/include/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
  397. package/third-party/include/executorch/runtime/backend/backend_execution_context.h +71 -0
  398. package/third-party/include/executorch/runtime/backend/backend_init_context.h +72 -0
  399. package/third-party/include/executorch/runtime/backend/interface.h +166 -0
  400. package/third-party/include/executorch/runtime/core/array_ref.h +235 -0
  401. package/third-party/include/executorch/runtime/core/data_loader.h +136 -0
  402. package/third-party/include/executorch/runtime/core/defines.h +20 -0
  403. package/third-party/include/executorch/runtime/core/error.h +229 -0
  404. package/third-party/include/executorch/runtime/core/evalue.h +521 -0
  405. package/third-party/include/executorch/runtime/core/event_tracer.h +565 -0
  406. package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +323 -0
  407. package/third-party/include/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
  408. package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +147 -0
  409. package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +263 -0
  410. package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1331 -0
  411. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
  412. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
  413. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +1250 -0
  414. package/third-party/include/executorch/runtime/core/freeable_buffer.h +107 -0
  415. package/third-party/include/executorch/runtime/core/hierarchical_allocator.h +107 -0
  416. package/third-party/include/executorch/runtime/core/memory_allocator.h +198 -0
  417. package/third-party/include/executorch/runtime/core/named_data_map.h +86 -0
  418. package/third-party/include/executorch/runtime/core/portable_type/bfloat16.h +27 -0
  419. package/third-party/include/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
  420. package/third-party/include/executorch/runtime/core/portable_type/bits_types.h +83 -0
  421. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +163 -0
  422. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +497 -0
  423. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +342 -0
  424. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
  425. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +125 -0
  426. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +347 -0
  427. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +416 -0
  428. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +133 -0
  429. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +43 -0
  430. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +33 -0
  431. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
  432. package/third-party/include/executorch/runtime/core/portable_type/complex.h +44 -0
  433. package/third-party/include/executorch/runtime/core/portable_type/device.h +70 -0
  434. package/third-party/include/executorch/runtime/core/portable_type/half.h +27 -0
  435. package/third-party/include/executorch/runtime/core/portable_type/optional.h +36 -0
  436. package/third-party/include/executorch/runtime/core/portable_type/qint_types.h +83 -0
  437. package/third-party/include/executorch/runtime/core/portable_type/scalar.h +110 -0
  438. package/third-party/include/executorch/runtime/core/portable_type/scalar_type.h +154 -0
  439. package/third-party/include/executorch/runtime/core/portable_type/string_view.h +29 -0
  440. package/third-party/include/executorch/runtime/core/portable_type/tensor.h +142 -0
  441. package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +261 -0
  442. package/third-party/include/executorch/runtime/core/portable_type/tensor_options.h +60 -0
  443. package/third-party/include/executorch/runtime/core/result.h +258 -0
  444. package/third-party/include/executorch/runtime/core/span.h +93 -0
  445. package/third-party/include/executorch/runtime/core/tag.h +71 -0
  446. package/third-party/include/executorch/runtime/core/tensor_layout.h +79 -0
  447. package/third-party/include/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
  448. package/third-party/include/executorch/runtime/executor/memory_manager.h +113 -0
  449. package/third-party/include/executorch/runtime/executor/method.h +387 -0
  450. package/third-party/include/executorch/runtime/executor/method_meta.h +251 -0
  451. package/third-party/include/executorch/runtime/executor/program.h +320 -0
  452. package/third-party/include/executorch/runtime/executor/pte_data_map.h +144 -0
  453. package/third-party/include/executorch/runtime/executor/tensor_parser.h +156 -0
  454. package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
  455. package/third-party/include/executorch/runtime/kernel/operator_registry.h +278 -0
  456. package/third-party/include/executorch/runtime/platform/abort.h +36 -0
  457. package/third-party/include/executorch/runtime/platform/assert.h +119 -0
  458. package/third-party/include/executorch/runtime/platform/clock.h +43 -0
  459. package/third-party/include/executorch/runtime/platform/compat_unistd.h +75 -0
  460. package/third-party/include/executorch/runtime/platform/compiler.h +191 -0
  461. package/third-party/include/executorch/runtime/platform/log.h +177 -0
  462. package/third-party/include/executorch/runtime/platform/platform.h +133 -0
  463. package/third-party/include/executorch/runtime/platform/profiler.h +292 -0
  464. package/third-party/include/executorch/runtime/platform/runtime.h +35 -0
  465. package/third-party/include/executorch/runtime/platform/system.h +49 -0
  466. package/third-party/include/executorch/runtime/platform/types.h +24 -0
  467. package/third-party/include/executorch/schema/extended_header.h +76 -0
  468. package/third-party/include/opencv2/core/affine.hpp +676 -0
  469. package/third-party/include/opencv2/core/async.hpp +107 -0
  470. package/third-party/include/opencv2/core/base.hpp +735 -0
  471. package/third-party/include/opencv2/core/bindings_utils.hpp +279 -0
  472. package/third-party/include/opencv2/core/bufferpool.hpp +39 -0
  473. package/third-party/include/opencv2/core/check.hpp +231 -0
  474. package/third-party/include/opencv2/core/core.hpp +55 -0
  475. package/third-party/include/opencv2/core/core_c.h +3261 -0
  476. package/third-party/include/opencv2/core/cv_cpu_dispatch.h +404 -0
  477. package/third-party/include/opencv2/core/cv_cpu_helper.h +856 -0
  478. package/third-party/include/opencv2/core/cvdef.h +1003 -0
  479. package/third-party/include/opencv2/core/cvstd.hpp +196 -0
  480. package/third-party/include/opencv2/core/cvstd.inl.hpp +188 -0
  481. package/third-party/include/opencv2/core/cvstd_wrapper.hpp +187 -0
  482. package/third-party/include/opencv2/core/detail/async_promise.hpp +73 -0
  483. package/third-party/include/opencv2/core/detail/dispatch_helper.impl.hpp +48 -0
  484. package/third-party/include/opencv2/core/detail/exception_ptr.hpp +24 -0
  485. package/third-party/include/opencv2/core/dualquaternion.hpp +1054 -0
  486. package/third-party/include/opencv2/core/dualquaternion.inl.hpp +464 -0
  487. package/third-party/include/opencv2/core/eigen.hpp +405 -0
  488. package/third-party/include/opencv2/core/fast_math.hpp +433 -0
  489. package/third-party/include/opencv2/core/hal/hal.hpp +451 -0
  490. package/third-party/include/opencv2/core/hal/interface.h +191 -0
  491. package/third-party/include/opencv2/core/hal/intrin.hpp +1222 -0
  492. package/third-party/include/opencv2/core/hal/intrin_avx.hpp +3378 -0
  493. package/third-party/include/opencv2/core/hal/intrin_avx512.hpp +3688 -0
  494. package/third-party/include/opencv2/core/hal/intrin_cpp.hpp +3446 -0
  495. package/third-party/include/opencv2/core/hal/intrin_forward.hpp +195 -0
  496. package/third-party/include/opencv2/core/hal/intrin_lasx.hpp +3243 -0
  497. package/third-party/include/opencv2/core/hal/intrin_lsx.hpp +2671 -0
  498. package/third-party/include/opencv2/core/hal/intrin_math.hpp +772 -0
  499. package/third-party/include/opencv2/core/hal/intrin_msa.hpp +1973 -0
  500. package/third-party/include/opencv2/core/hal/intrin_neon.hpp +2710 -0
  501. package/third-party/include/opencv2/core/hal/intrin_rvv071.hpp +3452 -0
  502. package/third-party/include/opencv2/core/hal/intrin_rvv_scalable.hpp +2559 -0
  503. package/third-party/include/opencv2/core/hal/intrin_sse.hpp +3528 -0
  504. package/third-party/include/opencv2/core/hal/intrin_sse_em.hpp +175 -0
  505. package/third-party/include/opencv2/core/hal/intrin_vsx.hpp +1756 -0
  506. package/third-party/include/opencv2/core/hal/intrin_wasm.hpp +2911 -0
  507. package/third-party/include/opencv2/core/hal/msa_macros.h +2079 -0
  508. package/third-party/include/opencv2/core/hal/simd_utils.impl.hpp +313 -0
  509. package/third-party/include/opencv2/core/mat.hpp +3842 -0
  510. package/third-party/include/opencv2/core/mat.inl.hpp +2753 -0
  511. package/third-party/include/opencv2/core/matx.hpp +603 -0
  512. package/third-party/include/opencv2/core/matx.inl.hpp +1132 -0
  513. package/third-party/include/opencv2/core/neon_utils.hpp +127 -0
  514. package/third-party/include/opencv2/core/operations.hpp +610 -0
  515. package/third-party/include/opencv2/core/optim.hpp +362 -0
  516. package/third-party/include/opencv2/core/parallel/backend/parallel_for.openmp.hpp +66 -0
  517. package/third-party/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp +148 -0
  518. package/third-party/include/opencv2/core/parallel/parallel_backend.hpp +108 -0
  519. package/third-party/include/opencv2/core/persistence.hpp +1321 -0
  520. package/third-party/include/opencv2/core/quaternion.hpp +1889 -0
  521. package/third-party/include/opencv2/core/quaternion.inl.hpp +907 -0
  522. package/third-party/include/opencv2/core/saturate.hpp +347 -0
  523. package/third-party/include/opencv2/core/simd_intrinsics.hpp +90 -0
  524. package/third-party/include/opencv2/core/softfloat.hpp +657 -0
  525. package/third-party/include/opencv2/core/sse_utils.hpp +861 -0
  526. package/third-party/include/opencv2/core/traits.hpp +417 -0
  527. package/third-party/include/opencv2/core/types.hpp +2368 -0
  528. package/third-party/include/opencv2/core/types_c.h +2064 -0
  529. package/third-party/include/opencv2/core/utility.hpp +1296 -0
  530. package/third-party/include/opencv2/core/utils/allocator_stats.hpp +31 -0
  531. package/third-party/include/opencv2/core/utils/allocator_stats.impl.hpp +111 -0
  532. package/third-party/include/opencv2/core/utils/filesystem.hpp +91 -0
  533. package/third-party/include/opencv2/core/utils/fp_control_utils.hpp +70 -0
  534. package/third-party/include/opencv2/core/utils/instrumentation.hpp +127 -0
  535. package/third-party/include/opencv2/core/utils/logger.defines.hpp +50 -0
  536. package/third-party/include/opencv2/core/utils/logger.hpp +258 -0
  537. package/third-party/include/opencv2/core/utils/logtag.hpp +27 -0
  538. package/third-party/include/opencv2/core/utils/tls.hpp +230 -0
  539. package/third-party/include/opencv2/core/utils/trace.hpp +281 -0
  540. package/third-party/include/opencv2/core/version.hpp +29 -0
  541. package/third-party/include/opencv2/core/vsx_utils.hpp +1115 -0
  542. package/third-party/include/opencv2/core.hpp +3699 -0
  543. package/third-party/include/opencv2/cvconfig.h +155 -0
  544. package/third-party/include/opencv2/dnn/dnn.hpp +51 -0
  545. package/third-party/include/opencv2/dnn.hpp +17 -0
  546. package/third-party/include/opencv2/features2d/features2d.hpp +55 -0
  547. package/third-party/include/opencv2/features2d/hal/interface.h +32 -0
  548. package/third-party/include/opencv2/features2d.hpp +1756 -0
  549. package/third-party/include/opencv2/highgui/highgui.hpp +113 -0
  550. package/third-party/include/opencv2/highgui.hpp +17 -0
  551. package/third-party/include/opencv2/imgproc/bindings.hpp +34 -0
  552. package/third-party/include/opencv2/imgproc/detail/gcgraph.hpp +355 -0
  553. package/third-party/include/opencv2/imgproc/detail/legacy.hpp +35 -0
  554. package/third-party/include/opencv2/imgproc/hal/hal.hpp +246 -0
  555. package/third-party/include/opencv2/imgproc/hal/interface.h +52 -0
  556. package/third-party/include/opencv2/imgproc/imgproc.hpp +55 -0
  557. package/third-party/include/opencv2/imgproc/imgproc_c.h +1261 -0
  558. package/third-party/include/opencv2/imgproc/segmentation.hpp +168 -0
  559. package/third-party/include/opencv2/imgproc/types_c.h +632 -0
  560. package/third-party/include/opencv2/imgproc.hpp +5956 -0
  561. package/third-party/include/opencv2/opencv.hpp +102 -0
  562. package/third-party/include/opencv2/opencv_modules.hpp +19 -0
  563. package/third-party/include/opencv2/photo/legacy/constants_c.h +10 -0
  564. package/third-party/include/opencv2/photo/photo.hpp +55 -0
  565. package/third-party/include/opencv2/photo.hpp +975 -0
  566. package/third-party/include/opencv2/video/background_segm.hpp +341 -0
  567. package/third-party/include/opencv2/video/detail/tracking.detail.hpp +435 -0
  568. package/third-party/include/opencv2/video/legacy/constants_c.h +15 -0
  569. package/third-party/include/opencv2/video/tracking.hpp +1014 -0
  570. package/third-party/include/opencv2/video/video.hpp +55 -0
  571. package/third-party/include/opencv2/video.hpp +65 -0
  572. package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
  573. package/third-party/include/tokenizers-cpp/tokenizers_cpp.h +118 -0
  574. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/ETModel.h +27 -0
  575. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/ETModel.mm +249 -0
  576. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/HuggingFaceTokenizer.h +14 -0
  577. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/HuggingFaceTokenizer.mm +80 -0
  578. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/LLaMARunner.h +32 -0
  579. package/third-party/ios/ExecutorchLib/ExecutorchLib/Exported/LLaMARunner.mm +95 -0
  580. package/third-party/ios/ExecutorchLib/ExecutorchLib/InputType.h +12 -0
  581. package/third-party/ios/ExecutorchLib/ExecutorchLib/Utils.hpp +217 -0
  582. package/third-party/ios/ExecutorchLib/ExecutorchLib/model/Model.cpp +11 -0
  583. package/third-party/ios/ExecutorchLib/ExecutorchLib/model/Model.h +11 -0
  584. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/irunner.h +48 -0
  585. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/runner.cpp +278 -0
  586. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/runner.h +67 -0
  587. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/stats.h +164 -0
  588. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/text_decoder_runner.cpp +65 -0
  589. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/text_decoder_runner.h +105 -0
  590. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/text_prefiller.cpp +91 -0
  591. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/text_prefiller.h +51 -0
  592. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/text_token_generator.h +162 -0
  593. package/third-party/ios/ExecutorchLib/ExecutorchLib/runner/util.h +108 -0
  594. package/third-party/ios/ExecutorchLib/ExecutorchLib/sampler/sampler.cpp +193 -0
  595. package/third-party/ios/ExecutorchLib/ExecutorchLib/sampler/sampler.h +64 -0
  596. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/base64.h +202 -0
  597. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/bpe_tokenizer.cpp +313 -0
  598. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/bpe_tokenizer.h +57 -0
  599. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/llama_tiktoken.cpp +78 -0
  600. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/llama_tiktoken.h +23 -0
  601. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/tiktoken.cpp +427 -0
  602. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/tiktoken.h +87 -0
  603. package/third-party/ios/ExecutorchLib/ExecutorchLib/tokenizer/tokenizer.h +76 -0
  604. package/third-party/ios/ExecutorchLib/ExecutorchLib.xcodeproj/project.pbxproj +683 -0
  605. package/third-party/ios/ExecutorchLib/ExecutorchLib.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  606. package/third-party/ios/ExecutorchLib/ExecutorchLib.xcodeproj/project.xcworkspace/xcuserdata/norbertklockiewicz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  607. package/third-party/ios/ExecutorchLib/ExecutorchLib.xcodeproj/xcuserdata/norbertklockiewicz.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  608. package/third-party/ios/ExecutorchLib/build.sh +44 -0
  609. package/third-party/ios/ExecutorchLib/frameworks/backend_coreml.xcframework/Info.plist +43 -0
  610. package/third-party/ios/ExecutorchLib/frameworks/backend_coreml.xcframework/ios-arm64/libbackend_coreml_ios.a +0 -0
  611. package/third-party/ios/ExecutorchLib/frameworks/backend_coreml.xcframework/ios-arm64-simulator/libbackend_coreml_simulator.a +0 -0
  612. package/third-party/ios/ExecutorchLib/frameworks/backend_mps.xcframework/Info.plist +43 -0
  613. package/third-party/ios/ExecutorchLib/frameworks/backend_mps.xcframework/ios-arm64/libbackend_mps_ios.a +0 -0
  614. package/third-party/ios/ExecutorchLib/frameworks/backend_mps.xcframework/ios-arm64-simulator/libbackend_mps_simulator.a +0 -0
  615. package/third-party/ios/ExecutorchLib/frameworks/backend_xnnpack.xcframework/Info.plist +43 -0
  616. package/third-party/ios/ExecutorchLib/frameworks/backend_xnnpack.xcframework/ios-arm64/libbackend_xnnpack_ios.a +0 -0
  617. package/third-party/ios/ExecutorchLib/frameworks/backend_xnnpack.xcframework/ios-arm64-simulator/libbackend_xnnpack_simulator.a +0 -0
  618. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/Info.plist +47 -0
  619. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/macros/Export.h +163 -0
  620. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/macros/Macros.h +497 -0
  621. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/BFloat16-inl.h +342 -0
  622. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/BFloat16-math.h +266 -0
  623. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/BFloat16.h +125 -0
  624. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/Half-inl.h +347 -0
  625. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/Half.h +416 -0
  626. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/TypeSafeSignMath.h +133 -0
  627. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/bit_cast.h +43 -0
  628. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/floating_point_utils.h +33 -0
  629. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/c10/util/irange.h +107 -0
  630. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorch.h +13 -0
  631. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorchError.h +16 -0
  632. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorchLog.h +76 -0
  633. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorchModule.h +286 -0
  634. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorchTensor.h +742 -0
  635. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/ExecuTorchValue.h +219 -0
  636. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/extension/module/module.h +492 -0
  637. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/extension/tensor/tensor.h +13 -0
  638. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/extension/tensor/tensor_accessor.h +190 -0
  639. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/extension/tensor/tensor_ptr.h +347 -0
  640. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
  641. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/backend/backend_execution_context.h +71 -0
  642. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/backend/backend_init_context.h +72 -0
  643. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/backend/interface.h +166 -0
  644. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/array_ref.h +235 -0
  645. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/data_loader.h +136 -0
  646. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/defines.h +20 -0
  647. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/error.h +229 -0
  648. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/evalue.h +521 -0
  649. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/event_tracer.h +565 -0
  650. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/event_tracer_hooks.h +323 -0
  651. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
  652. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/exec_aten.h +147 -0
  653. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/util/dim_order_util.h +263 -0
  654. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1331 -0
  655. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
  656. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
  657. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/exec_aten/util/tensor_util.h +1250 -0
  658. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/freeable_buffer.h +107 -0
  659. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/hierarchical_allocator.h +107 -0
  660. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/memory_allocator.h +198 -0
  661. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/named_data_map.h +86 -0
  662. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/bfloat16.h +27 -0
  663. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
  664. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/bits_types.h +83 -0
  665. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +163 -0
  666. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +497 -0
  667. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +342 -0
  668. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
  669. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +125 -0
  670. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +347 -0
  671. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/Half.h +416 -0
  672. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +133 -0
  673. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +43 -0
  674. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +33 -0
  675. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
  676. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/complex.h +44 -0
  677. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/device.h +70 -0
  678. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/half.h +27 -0
  679. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/optional.h +36 -0
  680. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/qint_types.h +83 -0
  681. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/scalar.h +110 -0
  682. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/scalar_type.h +154 -0
  683. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/string_view.h +29 -0
  684. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/tensor.h +142 -0
  685. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/tensor_impl.h +261 -0
  686. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/portable_type/tensor_options.h +60 -0
  687. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/result.h +258 -0
  688. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/span.h +93 -0
  689. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/tag.h +71 -0
  690. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/tensor_layout.h +79 -0
  691. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
  692. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/memory_manager.h +113 -0
  693. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/method.h +387 -0
  694. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/method_meta.h +251 -0
  695. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/program.h +320 -0
  696. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/pte_data_map.h +144 -0
  697. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/executor/tensor_parser.h +156 -0
  698. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
  699. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/kernel/operator_registry.h +278 -0
  700. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/abort.h +36 -0
  701. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/assert.h +119 -0
  702. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/clock.h +43 -0
  703. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/compat_unistd.h +75 -0
  704. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/compiler.h +191 -0
  705. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/log.h +177 -0
  706. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/platform.h +133 -0
  707. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/profiler.h +292 -0
  708. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/runtime.h +35 -0
  709. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/system.h +49 -0
  710. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/runtime/platform/types.h +24 -0
  711. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/executorch/schema/extended_header.h +76 -0
  712. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/Headers/module.modulemap +5 -0
  713. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64/libexecutorch_ios.a +0 -0
  714. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/macros/Export.h +163 -0
  715. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/macros/Macros.h +497 -0
  716. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/BFloat16-inl.h +342 -0
  717. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/BFloat16-math.h +266 -0
  718. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/BFloat16.h +125 -0
  719. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/Half-inl.h +347 -0
  720. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/Half.h +416 -0
  721. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/TypeSafeSignMath.h +133 -0
  722. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/bit_cast.h +43 -0
  723. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/floating_point_utils.h +33 -0
  724. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/c10/util/irange.h +107 -0
  725. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorch.h +13 -0
  726. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorchError.h +16 -0
  727. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorchLog.h +76 -0
  728. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorchModule.h +286 -0
  729. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorchTensor.h +742 -0
  730. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/ExecuTorchValue.h +219 -0
  731. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/extension/module/module.h +492 -0
  732. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/extension/tensor/tensor.h +13 -0
  733. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/extension/tensor/tensor_accessor.h +190 -0
  734. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/extension/tensor/tensor_ptr.h +347 -0
  735. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
  736. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/backend/backend_execution_context.h +71 -0
  737. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/backend/backend_init_context.h +72 -0
  738. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/backend/interface.h +166 -0
  739. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/array_ref.h +235 -0
  740. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/data_loader.h +136 -0
  741. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/defines.h +20 -0
  742. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/error.h +229 -0
  743. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/evalue.h +521 -0
  744. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/event_tracer.h +565 -0
  745. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/event_tracer_hooks.h +323 -0
  746. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
  747. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/exec_aten.h +147 -0
  748. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/util/dim_order_util.h +263 -0
  749. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1331 -0
  750. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
  751. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
  752. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/exec_aten/util/tensor_util.h +1250 -0
  753. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/freeable_buffer.h +107 -0
  754. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/hierarchical_allocator.h +107 -0
  755. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/memory_allocator.h +198 -0
  756. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/named_data_map.h +86 -0
  757. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/bfloat16.h +27 -0
  758. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
  759. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/bits_types.h +83 -0
  760. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +163 -0
  761. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +497 -0
  762. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +342 -0
  763. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
  764. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +125 -0
  765. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +347 -0
  766. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/Half.h +416 -0
  767. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +133 -0
  768. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +43 -0
  769. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +33 -0
  770. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
  771. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/complex.h +44 -0
  772. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/device.h +70 -0
  773. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/half.h +27 -0
  774. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/optional.h +36 -0
  775. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/qint_types.h +83 -0
  776. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/scalar.h +110 -0
  777. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/scalar_type.h +154 -0
  778. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/string_view.h +29 -0
  779. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/tensor.h +142 -0
  780. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/tensor_impl.h +261 -0
  781. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/portable_type/tensor_options.h +60 -0
  782. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/result.h +258 -0
  783. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/span.h +93 -0
  784. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/tag.h +71 -0
  785. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/tensor_layout.h +79 -0
  786. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
  787. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/memory_manager.h +113 -0
  788. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/method.h +387 -0
  789. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/method_meta.h +251 -0
  790. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/program.h +320 -0
  791. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/pte_data_map.h +144 -0
  792. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/executor/tensor_parser.h +156 -0
  793. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
  794. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/kernel/operator_registry.h +278 -0
  795. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/abort.h +36 -0
  796. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/assert.h +119 -0
  797. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/clock.h +43 -0
  798. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/compat_unistd.h +75 -0
  799. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/compiler.h +191 -0
  800. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/log.h +177 -0
  801. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/platform.h +133 -0
  802. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/profiler.h +292 -0
  803. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/runtime.h +35 -0
  804. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/system.h +49 -0
  805. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/runtime/platform/types.h +24 -0
  806. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/executorch/schema/extended_header.h +76 -0
  807. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/Headers/module.modulemap +5 -0
  808. package/third-party/ios/ExecutorchLib/frameworks/executorch.xcframework/ios-arm64-simulator/libexecutorch_simulator.a +0 -0
  809. package/third-party/ios/ExecutorchLib/frameworks/kernels_custom.xcframework/Info.plist +43 -0
  810. package/third-party/ios/ExecutorchLib/frameworks/kernels_custom.xcframework/ios-arm64/libkernels_custom_ios.a +0 -0
  811. package/third-party/ios/ExecutorchLib/frameworks/kernels_custom.xcframework/ios-arm64-simulator/libkernels_custom_simulator.a +0 -0
  812. package/third-party/ios/ExecutorchLib/frameworks/kernels_optimized.xcframework/Info.plist +43 -0
  813. package/third-party/ios/ExecutorchLib/frameworks/kernels_optimized.xcframework/ios-arm64/libkernels_optimized_ios.a +0 -0
  814. package/third-party/ios/ExecutorchLib/frameworks/kernels_optimized.xcframework/ios-arm64-simulator/libkernels_optimized_simulator.a +0 -0
  815. package/third-party/ios/ExecutorchLib/frameworks/kernels_portable.xcframework/Info.plist +43 -0
  816. package/third-party/ios/ExecutorchLib/frameworks/kernels_portable.xcframework/ios-arm64/libkernels_portable_ios.a +0 -0
  817. package/third-party/ios/ExecutorchLib/frameworks/kernels_portable.xcframework/ios-arm64-simulator/libkernels_portable_simulator.a +0 -0
  818. package/third-party/ios/ExecutorchLib/frameworks/kernels_quantized.xcframework/Info.plist +43 -0
  819. package/third-party/ios/ExecutorchLib/frameworks/kernels_quantized.xcframework/ios-arm64/libkernels_quantized_ios.a +0 -0
  820. package/third-party/ios/ExecutorchLib/frameworks/kernels_quantized.xcframework/ios-arm64-simulator/libkernels_quantized_simulator.a +0 -0
  821. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/Info.plist +43 -0
  822. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/bitmap256.h +82 -0
  823. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/filtered_re2.h +111 -0
  824. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/pod_array.h +43 -0
  825. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/prefilter.h +130 -0
  826. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/prefilter_tree.h +139 -0
  827. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/prog.h +483 -0
  828. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/re2.h +994 -0
  829. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/regexp.h +692 -0
  830. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/set.h +85 -0
  831. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/sparse_array.h +367 -0
  832. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/sparse_set.h +241 -0
  833. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/stringpiece.h +205 -0
  834. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/unicode_casefold.h +78 -0
  835. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/unicode_groups.h +64 -0
  836. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Headers/walker-inl.h +235 -0
  837. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/Info.plist +26 -0
  838. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64/re2.framework/re2 +0 -0
  839. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/bitmap256.h +82 -0
  840. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/filtered_re2.h +111 -0
  841. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/pod_array.h +43 -0
  842. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/prefilter.h +130 -0
  843. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/prefilter_tree.h +139 -0
  844. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/prog.h +483 -0
  845. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/re2.h +994 -0
  846. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/regexp.h +692 -0
  847. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/set.h +85 -0
  848. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/sparse_array.h +367 -0
  849. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/sparse_set.h +241 -0
  850. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/stringpiece.h +205 -0
  851. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/unicode_casefold.h +78 -0
  852. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/unicode_groups.h +64 -0
  853. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Headers/walker-inl.h +235 -0
  854. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/Info.plist +26 -0
  855. package/third-party/ios/ExecutorchLib/frameworks/re2.xcframework/ios-arm64-simulator/re2.framework/re2 +0 -0
  856. package/third-party/ios/ios.toolchain.cmake +1122 -0
  857. package/LICENSE +0 -79
  858. package/README.md +0 -148
  859. package/android/src/main/java/com/swmansion/rnexecutorch/Classification.kt +0 -64
  860. package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +0 -90
  861. package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +0 -58
  862. package/android/src/main/java/com/swmansion/rnexecutorch/OCR.kt +0 -90
  863. package/android/src/main/java/com/swmansion/rnexecutorch/ObjectDetection.kt +0 -64
  864. package/android/src/main/java/com/swmansion/rnexecutorch/SpeechToText.kt +0 -91
  865. package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +0 -54
  866. package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +0 -51
  867. package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +0 -86
  868. package/android/src/main/java/com/swmansion/rnexecutorch/VerticalOCR.kt +0 -179
  869. package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +0 -54
  870. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +0 -48
  871. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +0 -37
  872. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +0 -46
  873. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/Constants.kt +0 -1005
  874. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +0 -26
  875. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +0 -142
  876. package/android/src/main/java/com/swmansion/rnexecutorch/models/objectDetection/SSDLiteLargeModel.kt +0 -74
  877. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Detector.kt +0 -82
  878. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/RecognitionHandler.kt +0 -117
  879. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Recognizer.kt +0 -51
  880. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/VerticalDetector.kt +0 -89
  881. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/CTCLabelConverter.kt +0 -58
  882. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/Constants.kt +0 -31
  883. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/DetectorUtils.kt +0 -608
  884. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +0 -430
  885. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TDecoder.kt +0 -39
  886. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TModule.kt +0 -43
  887. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Moonshine.kt +0 -16
  888. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineDecoder.kt +0 -23
  889. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineEncoder.kt +0 -20
  890. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Whisper.kt +0 -16
  891. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperDecoder.kt +0 -22
  892. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperEncoder.kt +0 -29
  893. package/android/src/main/java/com/swmansion/rnexecutorch/models/styleTransfer/StyleTransferModel.kt +0 -43
  894. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -87
  895. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ETError.kt +0 -34
  896. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ImageProcessor.kt +0 -237
  897. package/android/src/main/java/com/swmansion/rnexecutorch/utils/Numerical.kt +0 -8
  898. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ObjectDetectionUtils.kt +0 -201
  899. package/android/src/main/java/com/swmansion/rnexecutorch/utils/STFT.kt +0 -50
  900. package/android/src/main/java/com/swmansion/rnexecutorch/utils/TensorUtils.kt +0 -103
  901. package/ios/RnExecutorch/Classification.h +0 -5
  902. package/ios/RnExecutorch/Classification.mm +0 -54
  903. package/ios/RnExecutorch/ETModule.h +0 -5
  904. package/ios/RnExecutorch/ETModule.mm +0 -75
  905. package/ios/RnExecutorch/ImageSegmentation.h +0 -5
  906. package/ios/RnExecutorch/ImageSegmentation.mm +0 -60
  907. package/ios/RnExecutorch/OCR.h +0 -5
  908. package/ios/RnExecutorch/OCR.mm +0 -96
  909. package/ios/RnExecutorch/ObjectDetection.h +0 -5
  910. package/ios/RnExecutorch/ObjectDetection.mm +0 -56
  911. package/ios/RnExecutorch/SpeechToText.h +0 -5
  912. package/ios/RnExecutorch/SpeechToText.mm +0 -125
  913. package/ios/RnExecutorch/StyleTransfer.h +0 -5
  914. package/ios/RnExecutorch/StyleTransfer.mm +0 -55
  915. package/ios/RnExecutorch/TextEmbeddings.h +0 -5
  916. package/ios/RnExecutorch/TextEmbeddings.mm +0 -62
  917. package/ios/RnExecutorch/Tokenizer.h +0 -5
  918. package/ios/RnExecutorch/Tokenizer.mm +0 -83
  919. package/ios/RnExecutorch/VerticalOCR.h +0 -5
  920. package/ios/RnExecutorch/VerticalOCR.mm +0 -183
  921. package/ios/RnExecutorch/models/BaseModel.h +0 -21
  922. package/ios/RnExecutorch/models/BaseModel.mm +0 -43
  923. package/ios/RnExecutorch/models/classification/ClassificationModel.h +0 -10
  924. package/ios/RnExecutorch/models/classification/ClassificationModel.mm +0 -53
  925. package/ios/RnExecutorch/models/classification/Constants.h +0 -3
  926. package/ios/RnExecutorch/models/image_segmentation/Constants.h +0 -4
  927. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +0 -10
  928. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +0 -146
  929. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.hpp +0 -11
  930. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +0 -64
  931. package/ios/RnExecutorch/models/ocr/Detector.h +0 -9
  932. package/ios/RnExecutorch/models/ocr/Detector.mm +0 -101
  933. package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +0 -16
  934. package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +0 -135
  935. package/ios/RnExecutorch/models/ocr/Recognizer.h +0 -8
  936. package/ios/RnExecutorch/models/ocr/Recognizer.mm +0 -77
  937. package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -10
  938. package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +0 -118
  939. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.h +0 -16
  940. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.mm +0 -80
  941. package/ios/RnExecutorch/models/ocr/utils/Constants.h +0 -26
  942. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.h +0 -31
  943. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.mm +0 -754
  944. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.h +0 -10
  945. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -67
  946. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.h +0 -35
  947. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.mm +0 -331
  948. package/ios/RnExecutorch/models/stt/Moonshine.hpp +0 -13
  949. package/ios/RnExecutorch/models/stt/Moonshine.mm +0 -64
  950. package/ios/RnExecutorch/models/stt/MoonshineDecoder.hpp +0 -16
  951. package/ios/RnExecutorch/models/stt/MoonshineDecoder.mm +0 -24
  952. package/ios/RnExecutorch/models/stt/MoonshineEncoder.hpp +0 -15
  953. package/ios/RnExecutorch/models/stt/MoonshineEncoder.mm +0 -18
  954. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.hpp +0 -26
  955. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +0 -19
  956. package/ios/RnExecutorch/models/stt/Whisper.hpp +0 -12
  957. package/ios/RnExecutorch/models/stt/Whisper.mm +0 -68
  958. package/ios/RnExecutorch/models/stt/WhisperDecoder.hpp +0 -16
  959. package/ios/RnExecutorch/models/stt/WhisperDecoder.mm +0 -22
  960. package/ios/RnExecutorch/models/stt/WhisperEncoder.hpp +0 -15
  961. package/ios/RnExecutorch/models/stt/WhisperEncoder.mm +0 -21
  962. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.h +0 -11
  963. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.mm +0 -50
  964. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +0 -15
  965. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +0 -45
  966. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +0 -8
  967. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +0 -49
  968. package/ios/RnExecutorch/utils/Constants.h +0 -8
  969. package/ios/RnExecutorch/utils/ObjectDetectionUtils.hpp +0 -23
  970. package/ios/RnExecutorch/utils/SFFT.hpp +0 -13
  971. package/ios/RnExecutorch/utils/SFFT.mm +0 -71
  972. package/lib/module/native/NativeClassification.js +0 -5
  973. package/lib/module/native/NativeClassification.js.map +0 -1
  974. package/lib/module/native/NativeETModule.js +0 -5
  975. package/lib/module/native/NativeETModule.js.map +0 -1
  976. package/lib/module/native/NativeImageSegmentation.js +0 -5
  977. package/lib/module/native/NativeImageSegmentation.js.map +0 -1
  978. package/lib/module/native/NativeOCR.js +0 -5
  979. package/lib/module/native/NativeOCR.js.map +0 -1
  980. package/lib/module/native/NativeObjectDetection.js +0 -5
  981. package/lib/module/native/NativeObjectDetection.js.map +0 -1
  982. package/lib/module/native/NativeSpeechToText.js +0 -5
  983. package/lib/module/native/NativeSpeechToText.js.map +0 -1
  984. package/lib/module/native/NativeStyleTransfer.js +0 -5
  985. package/lib/module/native/NativeStyleTransfer.js.map +0 -1
  986. package/lib/module/native/NativeTextEmbeddings.js +0 -5
  987. package/lib/module/native/NativeTextEmbeddings.js.map +0 -1
  988. package/lib/module/native/NativeTokenizer.js +0 -5
  989. package/lib/module/native/NativeTokenizer.js.map +0 -1
  990. package/lib/module/native/NativeVerticalOCR.js +0 -5
  991. package/lib/module/native/NativeVerticalOCR.js.map +0 -1
  992. package/lib/module/package.json +0 -1
  993. package/lib/typescript/native/NativeClassification.d.ts +0 -10
  994. package/lib/typescript/native/NativeClassification.d.ts.map +0 -1
  995. package/lib/typescript/native/NativeETModule.d.ts +0 -9
  996. package/lib/typescript/native/NativeETModule.d.ts.map +0 -1
  997. package/lib/typescript/native/NativeImageSegmentation.d.ts +0 -10
  998. package/lib/typescript/native/NativeImageSegmentation.d.ts.map +0 -1
  999. package/lib/typescript/native/NativeOCR.d.ts +0 -9
  1000. package/lib/typescript/native/NativeOCR.d.ts.map +0 -1
  1001. package/lib/typescript/native/NativeObjectDetection.d.ts +0 -9
  1002. package/lib/typescript/native/NativeObjectDetection.d.ts.map +0 -1
  1003. package/lib/typescript/native/NativeSpeechToText.d.ts +0 -12
  1004. package/lib/typescript/native/NativeSpeechToText.d.ts.map +0 -1
  1005. package/lib/typescript/native/NativeStyleTransfer.d.ts.map +0 -1
  1006. package/lib/typescript/native/NativeTextEmbeddings.d.ts +0 -8
  1007. package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +0 -1
  1008. package/lib/typescript/native/NativeTokenizer.d.ts +0 -12
  1009. package/lib/typescript/native/NativeTokenizer.d.ts.map +0 -1
  1010. package/lib/typescript/native/NativeVerticalOCR.d.ts +0 -9
  1011. package/lib/typescript/native/NativeVerticalOCR.d.ts.map +0 -1
  1012. package/src/native/NativeClassification.ts +0 -9
  1013. package/src/native/NativeETModule.ts +0 -14
  1014. package/src/native/NativeImageSegmentation.ts +0 -14
  1015. package/src/native/NativeOCR.ts +0 -16
  1016. package/src/native/NativeObjectDetection.ts +0 -10
  1017. package/src/native/NativeSpeechToText.ts +0 -17
  1018. package/src/native/NativeStyleTransfer.ts +0 -10
  1019. package/src/native/NativeTextEmbeddings.ts +0 -9
  1020. package/src/native/NativeTokenizer.ts +0 -13
  1021. package/src/native/NativeVerticalOCR.ts +0 -16
@@ -0,0 +1,1115 @@
1
+ // This file is part of OpenCV project.
2
+ // It is subject to the license terms in the LICENSE file found in the top-level
3
+ // directory of this distribution and at http://opencv.org/license.html
4
+
5
+ #ifndef OPENCV_HAL_VSX_UTILS_HPP
6
+ #define OPENCV_HAL_VSX_UTILS_HPP
7
+
8
+ #include "opencv2/core/cvdef.h"
9
+
10
+ #ifndef SKIP_INCLUDES
11
+ #include <assert.h>
12
+ #endif
13
+
14
+ //! @addtogroup core_utils_vsx
15
+ //! @{
16
+ #if CV_VSX
17
+
18
+ #define __VSX_S16__(c, v) \
19
+ (c) { v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v }
20
+ #define __VSX_S8__(c, v) \
21
+ (c) { v, v, v, v, v, v, v, v }
22
+ #define __VSX_S4__(c, v) \
23
+ (c) { v, v, v, v }
24
+ #define __VSX_S2__(c, v) \
25
+ (c) { v, v }
26
+
27
+ typedef __vector unsigned char vec_uchar16;
28
+ #define vec_uchar16_set(...) \
29
+ (vec_uchar16) { __VA_ARGS__ }
30
+ #define vec_uchar16_sp(c) (__VSX_S16__(vec_uchar16, (unsigned char)c))
31
+ #define vec_uchar16_c(v) ((vec_uchar16)(v))
32
+ #define vec_uchar16_z vec_uchar16_sp(0)
33
+
34
+ typedef __vector signed char vec_char16;
35
+ #define vec_char16_set(...) \
36
+ (vec_char16) { __VA_ARGS__ }
37
+ #define vec_char16_sp(c) (__VSX_S16__(vec_char16, (signed char)c))
38
+ #define vec_char16_c(v) ((vec_char16)(v))
39
+ #define vec_char16_z vec_char16_sp(0)
40
+
41
+ typedef __vector unsigned short vec_ushort8;
42
+ #define vec_ushort8_set(...) \
43
+ (vec_ushort8) { __VA_ARGS__ }
44
+ #define vec_ushort8_sp(c) (__VSX_S8__(vec_ushort8, (unsigned short)c))
45
+ #define vec_ushort8_c(v) ((vec_ushort8)(v))
46
+ #define vec_ushort8_z vec_ushort8_sp(0)
47
+
48
+ typedef __vector signed short vec_short8;
49
+ #define vec_short8_set(...) \
50
+ (vec_short8) { __VA_ARGS__ }
51
+ #define vec_short8_sp(c) (__VSX_S8__(vec_short8, (signed short)c))
52
+ #define vec_short8_c(v) ((vec_short8)(v))
53
+ #define vec_short8_z vec_short8_sp(0)
54
+
55
+ typedef __vector unsigned int vec_uint4;
56
+ #define vec_uint4_set(...) \
57
+ (vec_uint4) { __VA_ARGS__ }
58
+ #define vec_uint4_sp(c) (__VSX_S4__(vec_uint4, (unsigned int)c))
59
+ #define vec_uint4_c(v) ((vec_uint4)(v))
60
+ #define vec_uint4_z vec_uint4_sp(0)
61
+
62
+ typedef __vector signed int vec_int4;
63
+ #define vec_int4_set(...) \
64
+ (vec_int4) { __VA_ARGS__ }
65
+ #define vec_int4_sp(c) (__VSX_S4__(vec_int4, (signed int)c))
66
+ #define vec_int4_c(v) ((vec_int4)(v))
67
+ #define vec_int4_z vec_int4_sp(0)
68
+
69
+ typedef __vector float vec_float4;
70
+ #define vec_float4_set(...) \
71
+ (vec_float4) { __VA_ARGS__ }
72
+ #define vec_float4_sp(c) (__VSX_S4__(vec_float4, c))
73
+ #define vec_float4_c(v) ((vec_float4)(v))
74
+ #define vec_float4_z vec_float4_sp(0)
75
+
76
+ typedef __vector unsigned long long vec_udword2;
77
+ #define vec_udword2_set(...) \
78
+ (vec_udword2) { __VA_ARGS__ }
79
+ #define vec_udword2_sp(c) (__VSX_S2__(vec_udword2, (unsigned long long)c))
80
+ #define vec_udword2_c(v) ((vec_udword2)(v))
81
+ #define vec_udword2_z vec_udword2_sp(0)
82
+
83
+ typedef __vector signed long long vec_dword2;
84
+ #define vec_dword2_set(...) \
85
+ (vec_dword2) { __VA_ARGS__ }
86
+ #define vec_dword2_sp(c) (__VSX_S2__(vec_dword2, (signed long long)c))
87
+ #define vec_dword2_c(v) ((vec_dword2)(v))
88
+ #define vec_dword2_z vec_dword2_sp(0)
89
+
90
+ typedef __vector double vec_double2;
91
+ #define vec_double2_set(...) \
92
+ (vec_double2) { __VA_ARGS__ }
93
+ #define vec_double2_c(v) ((vec_double2)(v))
94
+ #define vec_double2_sp(c) (__VSX_S2__(vec_double2, c))
95
+ #define vec_double2_z vec_double2_sp(0)
96
+
97
+ #define vec_bchar16 __vector __bool char
98
+ #define vec_bchar16_set(...) \
99
+ (vec_bchar16) { __VA_ARGS__ }
100
+ #define vec_bchar16_c(v) ((vec_bchar16)(v))
101
+
102
+ #define vec_bshort8 __vector __bool short
103
+ #define vec_bshort8_set(...) \
104
+ (vec_bshort8) { __VA_ARGS__ }
105
+ #define vec_bshort8_c(v) ((vec_bshort8)(v))
106
+
107
+ #define vec_bint4 __vector __bool int
108
+ #define vec_bint4_set(...) \
109
+ (vec_bint4) { __VA_ARGS__ }
110
+ #define vec_bint4_c(v) ((vec_bint4)(v))
111
+
112
+ #define vec_bdword2 __vector __bool long long
113
+ #define vec_bdword2_set(...) \
114
+ (vec_bdword2) { __VA_ARGS__ }
115
+ #define vec_bdword2_c(v) ((vec_bdword2)(v))
116
+
117
+ #define VSX_FINLINE(tp) extern inline tp __attribute__((always_inline))
118
+
119
+ #define VSX_REDIRECT_1RG(rt, rg, fnm, fn2) \
120
+ VSX_FINLINE(rt) fnm(const rg &a) { return fn2(a); }
121
+
122
+ #define VSX_REDIRECT_2RG(rt, rg, fnm, fn2) \
123
+ VSX_FINLINE(rt) fnm(const rg &a, const rg &b) { return fn2(a, b); }
124
+
125
+ /*
126
+ * GCC VSX compatibility
127
+ **/
128
+ #if defined(__GNUG__) && !defined(__clang__)
129
+
130
+ // inline asm helper
131
+ #define VSX_IMPL_1RG(rt, rg, opc, fnm) \
132
+ VSX_FINLINE(rt) fnm(const rg &a) { \
133
+ rt rs; \
134
+ __asm__ __volatile__(#opc " %x0,%x1" : "=wa"(rs) : "wa"(a)); \
135
+ return rs; \
136
+ }
137
+
138
+ #define VSX_IMPL_1VRG(rt, rg, opc, fnm) \
139
+ VSX_FINLINE(rt) fnm(const rg &a) { \
140
+ rt rs; \
141
+ __asm__ __volatile__(#opc " %0,%1" : "=v"(rs) : "v"(a)); \
142
+ return rs; \
143
+ }
144
+
145
+ #define VSX_IMPL_2VRG_F(rt, rg, fopc, fnm) \
146
+ VSX_FINLINE(rt) fnm(const rg &a, const rg &b) { \
147
+ rt rs; \
148
+ __asm__ __volatile__(fopc : "=v"(rs) : "v"(a), "v"(b)); \
149
+ return rs; \
150
+ }
151
+
152
+ #define VSX_IMPL_2VRG(rt, rg, opc, fnm) \
153
+ VSX_IMPL_2VRG_F(rt, rg, #opc " %0,%1,%2", fnm)
154
+
155
+ #if __GNUG__ < 8
156
+
157
+ // Support for int4 -> dword2 expanding multiply was added in GCC 8.
158
+ #ifdef vec_mule
159
+ #undef vec_mule
160
+ #endif
161
+ #ifdef vec_mulo
162
+ #undef vec_mulo
163
+ #endif
164
+
165
+ VSX_REDIRECT_2RG(vec_ushort8, vec_uchar16, vec_mule, __builtin_vec_mule)
166
+ VSX_REDIRECT_2RG(vec_short8, vec_char16, vec_mule, __builtin_vec_mule)
167
+ VSX_REDIRECT_2RG(vec_int4, vec_short8, vec_mule, __builtin_vec_mule)
168
+ VSX_REDIRECT_2RG(vec_uint4, vec_ushort8, vec_mule, __builtin_vec_mule)
169
+ VSX_REDIRECT_2RG(vec_ushort8, vec_uchar16, vec_mulo, __builtin_vec_mulo)
170
+ VSX_REDIRECT_2RG(vec_short8, vec_char16, vec_mulo, __builtin_vec_mulo)
171
+ VSX_REDIRECT_2RG(vec_int4, vec_short8, vec_mulo, __builtin_vec_mulo)
172
+ VSX_REDIRECT_2RG(vec_uint4, vec_ushort8, vec_mulo, __builtin_vec_mulo)
173
+
174
+ // dword2 support arrived in ISA 2.07 and GCC 8+
175
+ VSX_IMPL_2VRG(vec_dword2, vec_int4, vmulosw, vec_mule)
176
+ VSX_IMPL_2VRG(vec_udword2, vec_uint4, vmulouw, vec_mule)
177
+ VSX_IMPL_2VRG(vec_dword2, vec_int4, vmulesw, vec_mulo)
178
+ VSX_IMPL_2VRG(vec_udword2, vec_uint4, vmuleuw, vec_mulo)
179
+
180
+ #endif
181
+
182
+ #if __GNUG__ < 7
183
+ // up to GCC 6 vec_mul only supports precisions and llong
184
+ #ifdef vec_mul
185
+ #undef vec_mul
186
+ #endif
187
+ /*
188
+ * there's no a direct instruction for supporting 8-bit, 16-bit multiplication
189
+ *in ISA 2.07, XLC Implement it by using instruction "multiply even", "multiply
190
+ *odd" and "permute"
191
+ **/
192
+ #define VSX_IMPL_MULH(Tvec, cperm) \
193
+ VSX_FINLINE(Tvec) vec_mul(const Tvec &a, const Tvec &b) { \
194
+ static const vec_uchar16 ev_od = {cperm}; \
195
+ return vec_perm((Tvec)vec_mule(a, b), (Tvec)vec_mulo(a, b), ev_od); \
196
+ }
197
+ #define VSX_IMPL_MULH_P16 \
198
+ 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30
199
+ VSX_IMPL_MULH(vec_char16, VSX_IMPL_MULH_P16)
200
+ VSX_IMPL_MULH(vec_uchar16, VSX_IMPL_MULH_P16)
201
+ #define VSX_IMPL_MULH_P8 \
202
+ 0, 1, 16, 17, 4, 5, 20, 21, 8, 9, 24, 25, 12, 13, 28, 29
203
+ VSX_IMPL_MULH(vec_short8, VSX_IMPL_MULH_P8)
204
+ VSX_IMPL_MULH(vec_ushort8, VSX_IMPL_MULH_P8)
205
+ // vmuluwm can be used for unsigned or signed integers, that's what they said
206
+ VSX_IMPL_2VRG(vec_int4, vec_int4, vmuluwm, vec_mul)
207
+ VSX_IMPL_2VRG(vec_uint4, vec_uint4, vmuluwm, vec_mul)
208
+ // redirect to GCC builtin vec_mul, since it already supports precisions and
209
+ // llong
210
+ VSX_REDIRECT_2RG(vec_float4, vec_float4, vec_mul, __builtin_vec_mul)
211
+ VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mul, __builtin_vec_mul)
212
+ VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mul, __builtin_vec_mul)
213
+ VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mul, __builtin_vec_mul)
214
+ #endif // __GNUG__ < 7
215
+
216
+ #if __GNUG__ < 6
217
+ /*
218
+ * Instruction "compare greater than or equal" in ISA 2.07 only supports single
219
+ * and double precision.
220
+ * In XLC and new versions of GCC implement integers by using instruction
221
+ *"greater than" and NOR.
222
+ **/
223
+ #ifdef vec_cmpge
224
+ #undef vec_cmpge
225
+ #endif
226
+ #ifdef vec_cmple
227
+ #undef vec_cmple
228
+ #endif
229
+ #define vec_cmple(a, b) vec_cmpge(b, a)
230
+ #define VSX_IMPL_CMPGE(rt, rg, opc, fnm) \
231
+ VSX_IMPL_2VRG_F(rt, rg, #opc " %0,%2,%1\n\t xxlnor %x0,%x0,%x0", fnm)
232
+
233
+ VSX_IMPL_CMPGE(vec_bchar16, vec_char16, vcmpgtsb, vec_cmpge)
234
+ VSX_IMPL_CMPGE(vec_bchar16, vec_uchar16, vcmpgtub, vec_cmpge)
235
+ VSX_IMPL_CMPGE(vec_bshort8, vec_short8, vcmpgtsh, vec_cmpge)
236
+ VSX_IMPL_CMPGE(vec_bshort8, vec_ushort8, vcmpgtuh, vec_cmpge)
237
+ VSX_IMPL_CMPGE(vec_bint4, vec_int4, vcmpgtsw, vec_cmpge)
238
+ VSX_IMPL_CMPGE(vec_bint4, vec_uint4, vcmpgtuw, vec_cmpge)
239
+ VSX_IMPL_CMPGE(vec_bdword2, vec_dword2, vcmpgtsd, vec_cmpge)
240
+ VSX_IMPL_CMPGE(vec_bdword2, vec_udword2, vcmpgtud, vec_cmpge)
241
+
242
+ // redirect to GCC builtin cmpge, since it already supports precisions
243
+ VSX_REDIRECT_2RG(vec_bint4, vec_float4, vec_cmpge, __builtin_vec_cmpge)
244
+ VSX_REDIRECT_2RG(vec_bdword2, vec_double2, vec_cmpge, __builtin_vec_cmpge)
245
+
246
+ // up to gcc5 vec_nor doesn't support bool long long
247
+ #undef vec_nor
248
+ template <typename T>
249
+ VSX_REDIRECT_2RG(T, T, vec_nor, __builtin_vec_nor)
250
+
251
+ VSX_FINLINE(vec_bdword2) vec_nor(const vec_bdword2 &a, const vec_bdword2 &b) {
252
+ return vec_bdword2_c(__builtin_vec_nor(vec_dword2_c(a), vec_dword2_c(b)));
253
+ }
254
+
255
+ // vec_packs doesn't support double words in gcc4 and old versions of gcc5
256
+ #undef vec_packs
257
+ VSX_REDIRECT_2RG(vec_char16, vec_short8, vec_packs, __builtin_vec_packs)
258
+ VSX_REDIRECT_2RG(vec_uchar16, vec_ushort8, vec_packs, __builtin_vec_packs)
259
+ VSX_REDIRECT_2RG(vec_short8, vec_int4, vec_packs, __builtin_vec_packs)
260
+ VSX_REDIRECT_2RG(vec_ushort8, vec_uint4, vec_packs, __builtin_vec_packs)
261
+
262
+ VSX_IMPL_2VRG_F(vec_int4, vec_dword2, "vpksdss %0,%2,%1", vec_packs)
263
+ VSX_IMPL_2VRG_F(vec_uint4, vec_udword2, "vpkudus %0,%2,%1", vec_packs)
264
+ #endif // __GNUG__ < 6
265
+
266
+ #if __GNUG__ < 5
267
+ // vec_xxpermdi in gcc4 missing little-endian supports just like clang
268
+ #define vec_permi(a, b, c) vec_xxpermdi(b, a, (3 ^ (((c) & 1) << 1 | (c) >> 1)))
269
+ // same as vec_xxpermdi
270
+ #undef vec_vbpermq
271
+ VSX_IMPL_2VRG(vec_udword2, vec_uchar16, vbpermq, vec_vbpermq)
272
+ VSX_IMPL_2VRG(vec_dword2, vec_char16, vbpermq, vec_vbpermq)
273
+ #else
274
+ #define vec_permi vec_xxpermdi
275
+ #endif // __GNUG__ < 5
276
+
277
+ // shift left double by word immediate
278
+ #ifndef vec_sldw
279
+ #define vec_sldw __builtin_vsx_xxsldwi
280
+ #endif
281
+
282
+ // vector population count
283
+ VSX_IMPL_1VRG(vec_uchar16, vec_uchar16, vpopcntb, vec_popcntu)
284
+ VSX_IMPL_1VRG(vec_uchar16, vec_char16, vpopcntb, vec_popcntu)
285
+ VSX_IMPL_1VRG(vec_ushort8, vec_ushort8, vpopcnth, vec_popcntu)
286
+ VSX_IMPL_1VRG(vec_ushort8, vec_short8, vpopcnth, vec_popcntu)
287
+ VSX_IMPL_1VRG(vec_uint4, vec_uint4, vpopcntw, vec_popcntu)
288
+ VSX_IMPL_1VRG(vec_uint4, vec_int4, vpopcntw, vec_popcntu)
289
+ VSX_IMPL_1VRG(vec_udword2, vec_udword2, vpopcntd, vec_popcntu)
290
+ VSX_IMPL_1VRG(vec_udword2, vec_dword2, vpopcntd, vec_popcntu)
291
+
292
+ // converts between single and double-precision
293
+ VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp)
294
+ VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp)
295
+
296
+ // converts word and doubleword to double-precision
297
+ #undef vec_ctd
298
+ VSX_IMPL_1RG(vec_double2, vec_int4, xvcvsxwdp, vec_ctdo)
299
+ VSX_IMPL_1RG(vec_double2, vec_uint4, xvcvuxwdp, vec_ctdo)
300
+ VSX_IMPL_1RG(vec_double2, vec_dword2, xvcvsxddp, vec_ctd)
301
+ VSX_IMPL_1RG(vec_double2, vec_udword2, xvcvuxddp, vec_ctd)
302
+
303
+ // converts word and doubleword to single-precision
304
+ #undef vec_ctf
305
+ VSX_IMPL_1RG(vec_float4, vec_int4, xvcvsxwsp, vec_ctf)
306
+ VSX_IMPL_1RG(vec_float4, vec_uint4, xvcvuxwsp, vec_ctf)
307
+ VSX_IMPL_1RG(vec_float4, vec_dword2, xvcvsxdsp, vec_ctfo)
308
+ VSX_IMPL_1RG(vec_float4, vec_udword2, xvcvuxdsp, vec_ctfo)
309
+
310
+ // converts single and double precision to signed word
311
+ #undef vec_cts
312
+ VSX_IMPL_1RG(vec_int4, vec_double2, xvcvdpsxws, vec_ctso)
313
+ VSX_IMPL_1RG(vec_int4, vec_float4, xvcvspsxws, vec_cts)
314
+
315
+ // converts single and double precision to unsigned word
316
+ #undef vec_ctu
317
+ VSX_IMPL_1RG(vec_uint4, vec_double2, xvcvdpuxws, vec_ctuo)
318
+ VSX_IMPL_1RG(vec_uint4, vec_float4, xvcvspuxws, vec_ctu)
319
+
320
+ // converts single and double precision to signed doubleword
321
+ #undef vec_ctsl
322
+ VSX_IMPL_1RG(vec_dword2, vec_double2, xvcvdpsxds, vec_ctsl)
323
+ VSX_IMPL_1RG(vec_dword2, vec_float4, xvcvspsxds, vec_ctslo)
324
+
325
+ // converts single and double precision to unsigned doubleword
326
+ #undef vec_ctul
327
+ VSX_IMPL_1RG(vec_udword2, vec_double2, xvcvdpuxds, vec_ctul)
328
+ VSX_IMPL_1RG(vec_udword2, vec_float4, xvcvspuxds, vec_ctulo)
329
+
330
+ // just in case if GCC doesn't define it
331
+ #ifndef vec_xl
332
+ #define vec_xl vec_vsx_ld
333
+ #define vec_xst vec_vsx_st
334
+ #endif
335
+
336
+ #endif // GCC VSX compatibility
337
+
338
+ /*
339
+ * CLANG VSX compatibility
340
+ **/
341
+ #if defined(__clang__) && !defined(__IBMCPP__)
342
+
343
+ /*
344
+ * CLANG doesn't support %x<n> in the inline asm template which fixes register
345
+ * number when using any of the register constraints wa, wd, wf
346
+ *
347
+ * For more explanation checkout PowerPC and IBM RS6000 in
348
+ * https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html Also there's
349
+ * already an open bug https://bugs.llvm.org/show_bug.cgi?id=31837
350
+ *
351
+ * So we're not able to use inline asm and only use built-in functions that
352
+ * CLANG supports and use __builtin_convertvector if clang missing any of vector
353
+ * conversions built-in functions
354
+ *
355
+ * todo: clang asm template bug is fixed, need to reconsider the current
356
+ * workarounds.
357
+ */
358
+
359
+ // convert vector helper
360
+ #define VSX_IMPL_CONVERT(rt, rg, fnm) \
361
+ VSX_FINLINE(rt) fnm(const rg &a) { return __builtin_convertvector(a, rt); }
362
+
363
+ #ifndef vec_permi
364
+ #if __clang_major__ < 5
365
+ // implement vec_permi in a dirty way
366
+ #define VSX_IMPL_CLANG_4_PERMI(Tvec) \
367
+ VSX_FINLINE(Tvec) \
368
+ vec_permi(const Tvec &a, const Tvec &b, unsigned const char c) { \
369
+ switch (c) { \
370
+ case 0: \
371
+ return vec_mergeh(a, b); \
372
+ case 1: \
373
+ return vec_mergel(vec_mergeh(a, a), b); \
374
+ case 2: \
375
+ return vec_mergeh(vec_mergel(a, a), b); \
376
+ default: \
377
+ return vec_mergel(a, b); \
378
+ } \
379
+ }
380
+ VSX_IMPL_CLANG_4_PERMI(vec_udword2)
381
+ VSX_IMPL_CLANG_4_PERMI(vec_dword2)
382
+ VSX_IMPL_CLANG_4_PERMI(vec_double2)
383
+
384
+ // vec_xxsldwi is missing in clang 4
385
+ #define vec_xxsldwi(a, b, c) vec_sld(a, b, (c) * 4)
386
+ #else
387
+ // vec_xxpermdi is missing little-endian supports in clang 4 just like gcc4
388
+ #define vec_permi(a, b, c) vec_xxpermdi(b, a, (3 ^ (((c) & 1) << 1 | (c) >> 1)))
389
+ #endif // __clang_major__ < 5
390
+ #endif
391
+
392
+ // shift left double by word immediate
393
+ #ifndef vec_sldw
394
+ #define vec_sldw vec_xxsldwi
395
+ #endif
396
+
397
+ #if __clang_major__ < 13
398
+ // Implement vec_rsqrt since clang only supports vec_rsqrte
399
+ #ifndef vec_rsqrt
400
+ VSX_FINLINE(vec_float4) vec_rsqrt(const vec_float4 &a) {
401
+ return vec_div(vec_float4_sp(1), vec_sqrt(a));
402
+ }
403
+
404
+ VSX_FINLINE(vec_double2) vec_rsqrt(const vec_double2 &a) {
405
+ return vec_div(vec_double2_sp(1), vec_sqrt(a));
406
+ }
407
+ #endif
408
+
409
+ // vec_promote missing support for doubleword
410
+ VSX_FINLINE(vec_dword2) vec_promote(long long a, int b) {
411
+ vec_dword2 ret = vec_dword2_z;
412
+ ret[b & 1] = a;
413
+ return ret;
414
+ }
415
+
416
+ VSX_FINLINE(vec_udword2) vec_promote(unsigned long long a, int b) {
417
+ vec_udword2 ret = vec_udword2_z;
418
+ ret[b & 1] = a;
419
+ return ret;
420
+ }
421
+ #endif
422
+
423
+ // vec_popcnt should return unsigned but clang has different thought just like
424
+ // gcc in vec_vpopcnt
425
+ #define VSX_IMPL_POPCNTU(Tvec, Tvec2, ucast) \
426
+ VSX_FINLINE(Tvec) vec_popcntu(const Tvec2 &a) { return ucast(vec_popcnt(a)); }
427
+ VSX_IMPL_POPCNTU(vec_uchar16, vec_char16, vec_uchar16_c);
428
+ VSX_IMPL_POPCNTU(vec_ushort8, vec_short8, vec_ushort8_c);
429
+ VSX_IMPL_POPCNTU(vec_uint4, vec_int4, vec_uint4_c);
430
+ VSX_IMPL_POPCNTU(vec_udword2, vec_dword2, vec_udword2_c);
431
+ // redirect unsigned types
432
+ VSX_REDIRECT_1RG(vec_uchar16, vec_uchar16, vec_popcntu, vec_popcnt)
433
+ VSX_REDIRECT_1RG(vec_ushort8, vec_ushort8, vec_popcntu, vec_popcnt)
434
+ VSX_REDIRECT_1RG(vec_uint4, vec_uint4, vec_popcntu, vec_popcnt)
435
+ VSX_REDIRECT_1RG(vec_udword2, vec_udword2, vec_popcntu, vec_popcnt)
436
+
437
+ // converts between single and double precision
438
+ VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp)
439
+ VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp)
440
+
441
+ // converts word and doubleword to double-precision
442
+ #ifdef vec_ctd
443
+ #undef vec_ctd
444
+ #endif
445
+ VSX_REDIRECT_1RG(vec_double2, vec_int4, vec_ctdo, __builtin_vsx_xvcvsxwdp)
446
+ VSX_REDIRECT_1RG(vec_double2, vec_uint4, vec_ctdo, __builtin_vsx_xvcvuxwdp)
447
+
448
+ VSX_IMPL_CONVERT(vec_double2, vec_dword2, vec_ctd)
449
+ VSX_IMPL_CONVERT(vec_double2, vec_udword2, vec_ctd)
450
+
451
+ // converts word and doubleword to single-precision
452
+ #if __clang_major__ > 4
453
+ #undef vec_ctf
454
+ #endif
455
+ VSX_IMPL_CONVERT(vec_float4, vec_int4, vec_ctf)
456
+ VSX_IMPL_CONVERT(vec_float4, vec_uint4, vec_ctf)
457
+ VSX_REDIRECT_1RG(vec_float4, vec_dword2, vec_ctfo, __builtin_vsx_xvcvsxdsp)
458
+ VSX_REDIRECT_1RG(vec_float4, vec_udword2, vec_ctfo, __builtin_vsx_xvcvuxdsp)
459
+
460
+ // converts single and double precision to signed word
461
+ #if __clang_major__ > 4
462
+ #undef vec_cts
463
+ #endif
464
+ VSX_REDIRECT_1RG(vec_int4, vec_double2, vec_ctso, __builtin_vsx_xvcvdpsxws)
465
+ VSX_IMPL_CONVERT(vec_int4, vec_float4, vec_cts)
466
+
467
+ // converts single and double precision to unsigned word
468
+ #if __clang_major__ > 4
469
+ #undef vec_ctu
470
+ #endif
471
+ VSX_REDIRECT_1RG(vec_uint4, vec_double2, vec_ctuo, __builtin_vsx_xvcvdpuxws)
472
+ VSX_IMPL_CONVERT(vec_uint4, vec_float4, vec_ctu)
473
+
474
+ // converts single and double precision to signed doubleword
475
+ #ifdef vec_ctsl
476
+ #undef vec_ctsl
477
+ #endif
478
+ VSX_IMPL_CONVERT(vec_dword2, vec_double2, vec_ctsl)
479
+ // __builtin_convertvector unable to convert, xvcvspsxds is missing on it
480
+ VSX_FINLINE(vec_dword2) vec_ctslo(const vec_float4 &a) {
481
+ return vec_ctsl(vec_cvfo(a));
482
+ }
483
+
484
+ // converts single and double precision to unsigned doubleword
485
+ #ifdef vec_ctul
486
+ #undef vec_ctul
487
+ #endif
488
+ VSX_IMPL_CONVERT(vec_udword2, vec_double2, vec_ctul)
489
+ // __builtin_convertvector unable to convert, xvcvspuxds is missing on it
490
+ VSX_FINLINE(vec_udword2) vec_ctulo(const vec_float4 &a) {
491
+ return vec_ctul(vec_cvfo(a));
492
+ }
493
+
494
+ #endif // CLANG VSX compatibility
495
+
496
+ /*
497
+ * Common GCC, CLANG compatibility
498
+ **/
499
+ #if defined(__GNUG__) && !defined(__IBMCPP__)
500
+
501
+ #ifdef vec_cvf
502
+ #undef vec_cvf
503
+ #endif
504
+
505
+ #define VSX_IMPL_CONV_EVEN_4_2(rt, rg, fnm, fn2) \
506
+ VSX_FINLINE(rt) fnm(const rg &a) { return fn2(vec_sldw(a, a, 1)); }
507
+
508
+ VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_float4, vec_cvf, vec_cvfo)
509
+ VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_int4, vec_ctd, vec_ctdo)
510
+ VSX_IMPL_CONV_EVEN_4_2(vec_double2, vec_uint4, vec_ctd, vec_ctdo)
511
+
512
+ VSX_IMPL_CONV_EVEN_4_2(vec_dword2, vec_float4, vec_ctsl, vec_ctslo)
513
+ VSX_IMPL_CONV_EVEN_4_2(vec_udword2, vec_float4, vec_ctul, vec_ctulo)
514
+
515
+ #define VSX_IMPL_CONV_EVEN_2_4(rt, rg, fnm, fn2) \
516
+ VSX_FINLINE(rt) fnm(const rg &a) { \
517
+ rt v4 = fn2(a); \
518
+ return vec_sldw(v4, v4, 3); \
519
+ }
520
+
521
+ VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_double2, vec_cvf, vec_cvfo)
522
+ VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_dword2, vec_ctf, vec_ctfo)
523
+ VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_udword2, vec_ctf, vec_ctfo)
524
+
525
+ VSX_IMPL_CONV_EVEN_2_4(vec_int4, vec_double2, vec_cts, vec_ctso)
526
+ VSX_IMPL_CONV_EVEN_2_4(vec_uint4, vec_double2, vec_ctu, vec_ctuo)
527
+
528
+ // Only for Eigen!
529
+ /*
530
+ * changing behavior of conversion intrinsics for gcc has effect on Eigen
531
+ * so we redefine old behavior again only on gcc, clang
532
+ */
533
+ #if !defined(__clang__) || __clang_major__ > 4
534
+ // ignoring second arg since Eigen only truncates toward zero
535
+ #define VSX_IMPL_CONV_2VARIANT(rt, rg, fnm, fn2) \
536
+ VSX_FINLINE(rt) fnm(const rg &a, int only_truncate) { \
537
+ assert(only_truncate == 0); \
538
+ CV_UNUSED(only_truncate); \
539
+ return fn2(a); \
540
+ }
541
+ VSX_IMPL_CONV_2VARIANT(vec_int4, vec_float4, vec_cts, vec_cts)
542
+ VSX_IMPL_CONV_2VARIANT(vec_uint4, vec_float4, vec_ctu, vec_ctu)
543
+ VSX_IMPL_CONV_2VARIANT(vec_float4, vec_int4, vec_ctf, vec_ctf)
544
+ VSX_IMPL_CONV_2VARIANT(vec_float4, vec_uint4, vec_ctf, vec_ctf)
545
+ // define vec_cts for converting double precision to signed doubleword
546
+ // which isn't compatible with xlc but its okay since Eigen only uses it for gcc
547
+ VSX_IMPL_CONV_2VARIANT(vec_dword2, vec_double2, vec_cts, vec_ctsl)
548
+ #endif // Eigen
549
+
550
+ #endif // Common GCC, CLANG compatibility
551
+
552
+ /*
553
+ * XLC VSX compatibility
554
+ **/
555
+ #if defined(__IBMCPP__)
556
+
557
+ // vector population count
558
+ #define vec_popcntu vec_popcnt
559
+
560
+ // overload and redirect with setting second arg to zero
561
+ // since we only support conversions without the second arg
562
+ #define VSX_IMPL_OVERLOAD_Z2(rt, rg, fnm) \
563
+ VSX_FINLINE(rt) fnm(const rg &a) { return fnm(a, 0); }
564
+
565
+ VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_int4, vec_ctd)
566
+ VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_uint4, vec_ctd)
567
+ VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_dword2, vec_ctd)
568
+ VSX_IMPL_OVERLOAD_Z2(vec_double2, vec_udword2, vec_ctd)
569
+
570
+ VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_int4, vec_ctf)
571
+ VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_uint4, vec_ctf)
572
+ VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_dword2, vec_ctf)
573
+ VSX_IMPL_OVERLOAD_Z2(vec_float4, vec_udword2, vec_ctf)
574
+
575
+ VSX_IMPL_OVERLOAD_Z2(vec_int4, vec_double2, vec_cts)
576
+ VSX_IMPL_OVERLOAD_Z2(vec_int4, vec_float4, vec_cts)
577
+
578
+ VSX_IMPL_OVERLOAD_Z2(vec_uint4, vec_double2, vec_ctu)
579
+ VSX_IMPL_OVERLOAD_Z2(vec_uint4, vec_float4, vec_ctu)
580
+
581
+ VSX_IMPL_OVERLOAD_Z2(vec_dword2, vec_double2, vec_ctsl)
582
+ VSX_IMPL_OVERLOAD_Z2(vec_dword2, vec_float4, vec_ctsl)
583
+
584
+ VSX_IMPL_OVERLOAD_Z2(vec_udword2, vec_double2, vec_ctul)
585
+ VSX_IMPL_OVERLOAD_Z2(vec_udword2, vec_float4, vec_ctul)
586
+
587
+ // fixme: implement conversions of odd-numbered elements in a dirty way
588
+ // since xlc doesn't support VSX registers operand in inline asm.
589
+ #define VSX_IMPL_CONV_ODD_4_2(rt, rg, fnm, fn2) \
590
+ VSX_FINLINE(rt) fnm(const rg &a) { return fn2(vec_sldw(a, a, 3)); }
591
+
592
+ VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_float4, vec_cvfo, vec_cvf)
593
+ VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_int4, vec_ctdo, vec_ctd)
594
+ VSX_IMPL_CONV_ODD_4_2(vec_double2, vec_uint4, vec_ctdo, vec_ctd)
595
+
596
+ VSX_IMPL_CONV_ODD_4_2(vec_dword2, vec_float4, vec_ctslo, vec_ctsl)
597
+ VSX_IMPL_CONV_ODD_4_2(vec_udword2, vec_float4, vec_ctulo, vec_ctul)
598
+
599
+ #define VSX_IMPL_CONV_ODD_2_4(rt, rg, fnm, fn2) \
600
+ VSX_FINLINE(rt) fnm(const rg &a) { \
601
+ rt v4 = fn2(a); \
602
+ return vec_sldw(v4, v4, 1); \
603
+ }
604
+
605
+ VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_double2, vec_cvfo, vec_cvf)
606
+ VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_dword2, vec_ctfo, vec_ctf)
607
+ VSX_IMPL_CONV_ODD_2_4(vec_float4, vec_udword2, vec_ctfo, vec_ctf)
608
+
609
+ VSX_IMPL_CONV_ODD_2_4(vec_int4, vec_double2, vec_ctso, vec_cts)
610
+ VSX_IMPL_CONV_ODD_2_4(vec_uint4, vec_double2, vec_ctuo, vec_ctu)
611
+
612
+ #endif // XLC VSX compatibility
613
+
614
+ // ignore GCC warning that caused by -Wunused-but-set-variable in rare cases
615
+ #if defined(__GNUG__) && !defined(__clang__)
616
+ #define VSX_UNUSED(Tvec) Tvec __attribute__((__unused__))
617
+ #else // CLANG, XLC
618
+ #define VSX_UNUSED(Tvec) Tvec
619
+ #endif
620
+
621
+ // gcc can find his way in casting log int and XLC, CLANG ambiguous
622
+ #if defined(__clang__) || defined(__IBMCPP__)
623
+ VSX_FINLINE(vec_udword2) vec_splats(uint64 v) {
624
+ return vec_splats((unsigned long long)v);
625
+ }
626
+
627
+ VSX_FINLINE(vec_dword2) vec_splats(int64 v) { return vec_splats((long long)v); }
628
+
629
+ VSX_FINLINE(vec_udword2) vec_promote(uint64 a, int b) {
630
+ return vec_promote((unsigned long long)a, b);
631
+ }
632
+
633
+ VSX_FINLINE(vec_dword2) vec_promote(int64 a, int b) {
634
+ return vec_promote((long long)a, b);
635
+ }
636
+ #endif
637
+
638
+ /*
639
+ * implement vsx_ld(offset, pointer), vsx_st(vector, offset, pointer)
640
+ * load and set using offset depend on the pointer type
641
+ *
642
+ * implement vsx_ldf(offset, pointer), vsx_stf(vector, offset, pointer)
643
+ * load and set using offset depend on fixed bytes size
644
+ *
645
+ * Note: In clang vec_xl and vec_xst fails to load unaligned addresses
646
+ * so we are using vec_vsx_ld, vec_vsx_st instead
647
+ */
648
+
649
+ #if defined(__clang__) && !defined(__IBMCPP__)
650
+ #define vsx_ldf vec_vsx_ld
651
+ #define vsx_stf vec_vsx_st
652
+ #else // GCC , XLC
653
+ #define vsx_ldf vec_xl
654
+ #define vsx_stf vec_xst
655
+ #endif
656
+
657
+ #define VSX_OFFSET(o, p) ((o) * sizeof(*(p)))
658
+ #define vsx_ld(o, p) vsx_ldf(VSX_OFFSET(o, p), p)
659
+ #define vsx_st(v, o, p) vsx_stf(v, VSX_OFFSET(o, p), p)
660
+
661
+ /*
662
+ * implement vsx_ld2(offset, pointer), vsx_st2(vector, offset, pointer) to load
663
+ * and store double words In GCC vec_xl and vec_xst it maps to vec_vsx_ld,
664
+ * vec_vsx_st which doesn't support long long and in CLANG we are using
665
+ * vec_vsx_ld, vec_vsx_st because vec_xl, vec_xst fails to load unaligned
666
+ * addresses
667
+ *
668
+ * In XLC vec_xl and vec_xst fail to cast int64(long int) to long long
669
+ */
670
+ #if (defined(__GNUG__) || defined(__clang__)) && !defined(__IBMCPP__)
671
+ VSX_FINLINE(vec_udword2) vsx_ld2(long o, const uint64 *p) {
672
+ return vec_udword2_c(vsx_ldf(VSX_OFFSET(o, p), (unsigned int *)p));
673
+ }
674
+
675
+ VSX_FINLINE(vec_dword2) vsx_ld2(long o, const int64 *p) {
676
+ return vec_dword2_c(vsx_ldf(VSX_OFFSET(o, p), (int *)p));
677
+ }
678
+
679
+ VSX_FINLINE(void) vsx_st2(const vec_udword2 &vec, long o, uint64 *p) {
680
+ vsx_stf(vec_uint4_c(vec), VSX_OFFSET(o, p), (unsigned int *)p);
681
+ }
682
+
683
+ VSX_FINLINE(void) vsx_st2(const vec_dword2 &vec, long o, int64 *p) {
684
+ vsx_stf(vec_int4_c(vec), VSX_OFFSET(o, p), (int *)p);
685
+ }
686
+ #else // XLC
687
+ VSX_FINLINE(vec_udword2) vsx_ld2(long o, const uint64 *p) {
688
+ return vsx_ldf(VSX_OFFSET(o, p), (unsigned long long *)p);
689
+ }
690
+
691
+ VSX_FINLINE(vec_dword2) vsx_ld2(long o, const int64 *p) {
692
+ return vsx_ldf(VSX_OFFSET(o, p), (long long *)p);
693
+ }
694
+
695
+ VSX_FINLINE(void) vsx_st2(const vec_udword2 &vec, long o, uint64 *p) {
696
+ vsx_stf(vec, VSX_OFFSET(o, p), (unsigned long long *)p);
697
+ }
698
+
699
+ VSX_FINLINE(void) vsx_st2(const vec_dword2 &vec, long o, int64 *p) {
700
+ vsx_stf(vec, VSX_OFFSET(o, p), (long long *)p);
701
+ }
702
+ #endif
703
+
704
+ // Store lower 8 byte
705
+ #define vec_st_l8(v, p) *((uint64 *)(p)) = vec_extract(vec_udword2_c(v), 0)
706
+
707
+ // Store higher 8 byte
708
+ #define vec_st_h8(v, p) *((uint64 *)(p)) = vec_extract(vec_udword2_c(v), 1)
709
+
710
+ // Load 64-bits of integer data to lower part
711
+ #define VSX_IMPL_LOAD_L8(Tvec, Tp) \
712
+ VSX_FINLINE(Tvec) vec_ld_l8(const Tp *p) { \
713
+ return ((Tvec)vec_promote(*((uint64 *)p), 0)); \
714
+ }
715
+
716
+ VSX_IMPL_LOAD_L8(vec_uchar16, uchar)
717
+ VSX_IMPL_LOAD_L8(vec_char16, schar)
718
+ VSX_IMPL_LOAD_L8(vec_ushort8, ushort)
719
+ VSX_IMPL_LOAD_L8(vec_short8, short)
720
+ VSX_IMPL_LOAD_L8(vec_uint4, uint)
721
+ VSX_IMPL_LOAD_L8(vec_int4, int)
722
+ VSX_IMPL_LOAD_L8(vec_float4, float)
723
+ VSX_IMPL_LOAD_L8(vec_udword2, uint64)
724
+ VSX_IMPL_LOAD_L8(vec_dword2, int64)
725
+ VSX_IMPL_LOAD_L8(vec_double2, double)
726
+
727
+ // logical not
728
+ #define vec_not(a) vec_nor(a, a)
729
+
730
+ // power9 yaya
731
+ // not equal
732
+ #ifndef vec_cmpne
733
+ #define vec_cmpne(a, b) vec_not(vec_cmpeq(a, b))
734
+ #endif
735
+
736
+ // absolute difference
737
+ #ifndef _ARCH_PWR9
738
+ #undef vec_absd
739
+ #define vec_absd(a, b) vec_sub(vec_max(a, b), vec_min(a, b))
740
+ #endif
741
+
742
+ /*
743
+ * Implement vec_unpacklu and vec_unpackhu
744
+ * since vec_unpackl, vec_unpackh only support signed integers
745
+ **/
746
+ #define VSX_IMPL_UNPACKU(rt, rg, zero) \
747
+ VSX_FINLINE(rt) vec_unpacklu(const rg &a) { \
748
+ return (rt)(vec_mergel(a, zero)); \
749
+ } \
750
+ VSX_FINLINE(rt) vec_unpackhu(const rg &a) { \
751
+ return (rt)(vec_mergeh(a, zero)); \
752
+ }
753
+
754
+ VSX_IMPL_UNPACKU(vec_ushort8, vec_uchar16, vec_uchar16_z)
755
+ VSX_IMPL_UNPACKU(vec_uint4, vec_ushort8, vec_ushort8_z)
756
+ VSX_IMPL_UNPACKU(vec_udword2, vec_uint4, vec_uint4_z)
757
+
758
+ /*
759
+ * Implement vec_mergesqe and vec_mergesqo
760
+ * Merges the sequence values of even and odd elements of two vectors
761
+ */
762
+ #define VSX_IMPL_PERM(rt, fnm, ...) \
763
+ VSX_FINLINE(rt) fnm(const rt &a, const rt &b) { \
764
+ static const vec_uchar16 perm = {__VA_ARGS__}; \
765
+ return vec_perm(a, b, perm); \
766
+ }
767
+
768
+ // 16
769
+ #define perm16_mergesqe \
770
+ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30
771
+ #define perm16_mergesqo \
772
+ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31
773
+ VSX_IMPL_PERM(vec_uchar16, vec_mergesqe, perm16_mergesqe)
774
+ VSX_IMPL_PERM(vec_uchar16, vec_mergesqo, perm16_mergesqo)
775
+ VSX_IMPL_PERM(vec_char16, vec_mergesqe, perm16_mergesqe)
776
+ VSX_IMPL_PERM(vec_char16, vec_mergesqo, perm16_mergesqo)
777
+ // 8
778
+ #define perm8_mergesqe 0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29
779
+ #define perm8_mergesqo \
780
+ 2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31
781
+ VSX_IMPL_PERM(vec_ushort8, vec_mergesqe, perm8_mergesqe)
782
+ VSX_IMPL_PERM(vec_ushort8, vec_mergesqo, perm8_mergesqo)
783
+ VSX_IMPL_PERM(vec_short8, vec_mergesqe, perm8_mergesqe)
784
+ VSX_IMPL_PERM(vec_short8, vec_mergesqo, perm8_mergesqo)
785
+ // 4
786
+ #define perm4_mergesqe 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27
787
+ #define perm4_mergesqo \
788
+ 4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31
789
+ VSX_IMPL_PERM(vec_uint4, vec_mergesqe, perm4_mergesqe)
790
+ VSX_IMPL_PERM(vec_uint4, vec_mergesqo, perm4_mergesqo)
791
+ VSX_IMPL_PERM(vec_int4, vec_mergesqe, perm4_mergesqe)
792
+ VSX_IMPL_PERM(vec_int4, vec_mergesqo, perm4_mergesqo)
793
+ VSX_IMPL_PERM(vec_float4, vec_mergesqe, perm4_mergesqe)
794
+ VSX_IMPL_PERM(vec_float4, vec_mergesqo, perm4_mergesqo)
795
+ // 2
796
+ VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqe, vec_mergeh)
797
+ VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqo, vec_mergel)
798
+ VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqe, vec_mergeh)
799
+ VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqo, vec_mergel)
800
+ VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqe, vec_mergeh)
801
+ VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqo, vec_mergel)
802
+
803
+ /*
804
+ * Implement vec_mergesqh and vec_mergesql
805
+ * Merges the sequence most and least significant halves of two vectors
806
+ */
807
+ #define VSX_IMPL_MERGESQHL(Tvec) \
808
+ VSX_FINLINE(Tvec) vec_mergesqh(const Tvec &a, const Tvec &b) { \
809
+ return (Tvec)vec_mergeh(vec_udword2_c(a), vec_udword2_c(b)); \
810
+ } \
811
+ VSX_FINLINE(Tvec) vec_mergesql(const Tvec &a, const Tvec &b) { \
812
+ return (Tvec)vec_mergel(vec_udword2_c(a), vec_udword2_c(b)); \
813
+ }
814
+ VSX_IMPL_MERGESQHL(vec_uchar16)
815
+ VSX_IMPL_MERGESQHL(vec_char16)
816
+ VSX_IMPL_MERGESQHL(vec_ushort8)
817
+ VSX_IMPL_MERGESQHL(vec_short8)
818
+ VSX_IMPL_MERGESQHL(vec_uint4)
819
+ VSX_IMPL_MERGESQHL(vec_int4)
820
+ VSX_IMPL_MERGESQHL(vec_float4)
821
+ VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesqh, vec_mergeh)
822
+ VSX_REDIRECT_2RG(vec_udword2, vec_udword2, vec_mergesql, vec_mergel)
823
+ VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesqh, vec_mergeh)
824
+ VSX_REDIRECT_2RG(vec_dword2, vec_dword2, vec_mergesql, vec_mergel)
825
+ VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesqh, vec_mergeh)
826
+ VSX_REDIRECT_2RG(vec_double2, vec_double2, vec_mergesql, vec_mergel)
827
+
828
+ // 2 and 4 channels interleave for all types except 2 lanes
829
+ #define VSX_IMPL_ST_INTERLEAVE(Tp, Tvec) \
830
+ VSX_FINLINE(void) vec_st_interleave(const Tvec &a, const Tvec &b, Tp *ptr) { \
831
+ vsx_stf(vec_mergeh(a, b), 0, ptr); \
832
+ vsx_stf(vec_mergel(a, b), 16, ptr); \
833
+ } \
834
+ VSX_FINLINE(void) \
835
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, \
836
+ const Tvec &d, Tp *ptr) { \
837
+ Tvec ac = vec_mergeh(a, c); \
838
+ Tvec bd = vec_mergeh(b, d); \
839
+ vsx_stf(vec_mergeh(ac, bd), 0, ptr); \
840
+ vsx_stf(vec_mergel(ac, bd), 16, ptr); \
841
+ ac = vec_mergel(a, c); \
842
+ bd = vec_mergel(b, d); \
843
+ vsx_stf(vec_mergeh(ac, bd), 32, ptr); \
844
+ vsx_stf(vec_mergel(ac, bd), 48, ptr); \
845
+ }
846
+ VSX_IMPL_ST_INTERLEAVE(uchar, vec_uchar16)
847
+ VSX_IMPL_ST_INTERLEAVE(schar, vec_char16)
848
+ VSX_IMPL_ST_INTERLEAVE(ushort, vec_ushort8)
849
+ VSX_IMPL_ST_INTERLEAVE(short, vec_short8)
850
+ VSX_IMPL_ST_INTERLEAVE(uint, vec_uint4)
851
+ VSX_IMPL_ST_INTERLEAVE(int, vec_int4)
852
+ VSX_IMPL_ST_INTERLEAVE(float, vec_float4)
853
+
854
+ // 2 and 4 channels deinterleave for 16 lanes
855
+ #define VSX_IMPL_ST_DINTERLEAVE_8(Tp, Tvec) \
856
+ VSX_FINLINE(void) vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b) { \
857
+ Tvec v0 = vsx_ld(0, ptr); \
858
+ Tvec v1 = vsx_ld(16, ptr); \
859
+ a = vec_mergesqe(v0, v1); \
860
+ b = vec_mergesqo(v0, v1); \
861
+ } \
862
+ VSX_FINLINE(void) \
863
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c, Tvec &d) { \
864
+ Tvec v0 = vsx_ld(0, ptr); \
865
+ Tvec v1 = vsx_ld(16, ptr); \
866
+ Tvec v2 = vsx_ld(32, ptr); \
867
+ Tvec v3 = vsx_ld(48, ptr); \
868
+ Tvec m0 = vec_mergesqe(v0, v1); \
869
+ Tvec m1 = vec_mergesqe(v2, v3); \
870
+ a = vec_mergesqe(m0, m1); \
871
+ c = vec_mergesqo(m0, m1); \
872
+ m0 = vec_mergesqo(v0, v1); \
873
+ m1 = vec_mergesqo(v2, v3); \
874
+ b = vec_mergesqe(m0, m1); \
875
+ d = vec_mergesqo(m0, m1); \
876
+ }
877
+ VSX_IMPL_ST_DINTERLEAVE_8(uchar, vec_uchar16)
878
+ VSX_IMPL_ST_DINTERLEAVE_8(schar, vec_char16)
879
+
880
+ // 2 and 4 channels deinterleave for 8 lanes
881
+ #define VSX_IMPL_ST_DINTERLEAVE_16(Tp, Tvec) \
882
+ VSX_FINLINE(void) vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b) { \
883
+ Tvec v0 = vsx_ld(0, ptr); \
884
+ Tvec v1 = vsx_ld(8, ptr); \
885
+ a = vec_mergesqe(v0, v1); \
886
+ b = vec_mergesqo(v0, v1); \
887
+ } \
888
+ VSX_FINLINE(void) \
889
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c, Tvec &d) { \
890
+ Tvec v0 = vsx_ld(0, ptr); \
891
+ Tvec v1 = vsx_ld(8, ptr); \
892
+ Tvec m0 = vec_mergeh(v0, v1); \
893
+ Tvec m1 = vec_mergel(v0, v1); \
894
+ Tvec ab0 = vec_mergeh(m0, m1); \
895
+ Tvec cd0 = vec_mergel(m0, m1); \
896
+ v0 = vsx_ld(16, ptr); \
897
+ v1 = vsx_ld(24, ptr); \
898
+ m0 = vec_mergeh(v0, v1); \
899
+ m1 = vec_mergel(v0, v1); \
900
+ Tvec ab1 = vec_mergeh(m0, m1); \
901
+ Tvec cd1 = vec_mergel(m0, m1); \
902
+ a = vec_mergesqh(ab0, ab1); \
903
+ b = vec_mergesql(ab0, ab1); \
904
+ c = vec_mergesqh(cd0, cd1); \
905
+ d = vec_mergesql(cd0, cd1); \
906
+ }
907
+ VSX_IMPL_ST_DINTERLEAVE_16(ushort, vec_ushort8)
908
+ VSX_IMPL_ST_DINTERLEAVE_16(short, vec_short8)
909
+
910
+ // 2 and 4 channels deinterleave for 4 lanes
911
+ #define VSX_IMPL_ST_DINTERLEAVE_32(Tp, Tvec) \
912
+ VSX_FINLINE(void) vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b) { \
913
+ a = vsx_ld(0, ptr); \
914
+ b = vsx_ld(4, ptr); \
915
+ Tvec m0 = vec_mergeh(a, b); \
916
+ Tvec m1 = vec_mergel(a, b); \
917
+ a = vec_mergeh(m0, m1); \
918
+ b = vec_mergel(m0, m1); \
919
+ } \
920
+ VSX_FINLINE(void) \
921
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c, Tvec &d) { \
922
+ Tvec v0 = vsx_ld(0, ptr); \
923
+ Tvec v1 = vsx_ld(4, ptr); \
924
+ Tvec v2 = vsx_ld(8, ptr); \
925
+ Tvec v3 = vsx_ld(12, ptr); \
926
+ Tvec m0 = vec_mergeh(v0, v2); \
927
+ Tvec m1 = vec_mergeh(v1, v3); \
928
+ a = vec_mergeh(m0, m1); \
929
+ b = vec_mergel(m0, m1); \
930
+ m0 = vec_mergel(v0, v2); \
931
+ m1 = vec_mergel(v1, v3); \
932
+ c = vec_mergeh(m0, m1); \
933
+ d = vec_mergel(m0, m1); \
934
+ }
935
+ VSX_IMPL_ST_DINTERLEAVE_32(uint, vec_uint4)
936
+ VSX_IMPL_ST_DINTERLEAVE_32(int, vec_int4)
937
+ VSX_IMPL_ST_DINTERLEAVE_32(float, vec_float4)
938
+
939
+ // 2 and 4 channels interleave and deinterleave for 2 lanes
940
+ #define VSX_IMPL_ST_D_INTERLEAVE_64(Tp, Tvec, ld_func, st_func) \
941
+ VSX_FINLINE(void) vec_st_interleave(const Tvec &a, const Tvec &b, Tp *ptr) { \
942
+ st_func(vec_mergeh(a, b), 0, ptr); \
943
+ st_func(vec_mergel(a, b), 2, ptr); \
944
+ } \
945
+ VSX_FINLINE(void) \
946
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, \
947
+ const Tvec &d, Tp *ptr) { \
948
+ st_func(vec_mergeh(a, b), 0, ptr); \
949
+ st_func(vec_mergeh(c, d), 2, ptr); \
950
+ st_func(vec_mergel(a, b), 4, ptr); \
951
+ st_func(vec_mergel(c, d), 6, ptr); \
952
+ } \
953
+ VSX_FINLINE(void) vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b) { \
954
+ Tvec m0 = ld_func(0, ptr); \
955
+ Tvec m1 = ld_func(2, ptr); \
956
+ a = vec_mergeh(m0, m1); \
957
+ b = vec_mergel(m0, m1); \
958
+ } \
959
+ VSX_FINLINE(void) \
960
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c, Tvec &d) { \
961
+ Tvec v0 = ld_func(0, ptr); \
962
+ Tvec v1 = ld_func(2, ptr); \
963
+ Tvec v2 = ld_func(4, ptr); \
964
+ Tvec v3 = ld_func(6, ptr); \
965
+ a = vec_mergeh(v0, v2); \
966
+ b = vec_mergel(v0, v2); \
967
+ c = vec_mergeh(v1, v3); \
968
+ d = vec_mergel(v1, v3); \
969
+ }
970
+ VSX_IMPL_ST_D_INTERLEAVE_64(int64, vec_dword2, vsx_ld2, vsx_st2)
971
+ VSX_IMPL_ST_D_INTERLEAVE_64(uint64, vec_udword2, vsx_ld2, vsx_st2)
972
+ VSX_IMPL_ST_D_INTERLEAVE_64(double, vec_double2, vsx_ld, vsx_st)
973
+
974
+ /* 3 channels */
975
+ #define VSX_IMPL_ST_INTERLEAVE_3CH_16(Tp, Tvec) \
976
+ VSX_FINLINE(void) \
977
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, Tp *ptr) { \
978
+ static const vec_uchar16 a12 = {0, 16, 0, 1, 17, 0, 2, 18, \
979
+ 0, 3, 19, 0, 4, 20, 0, 5}; \
980
+ static const vec_uchar16 a123 = {0, 1, 16, 3, 4, 17, 6, 7, \
981
+ 18, 9, 10, 19, 12, 13, 20, 15}; \
982
+ vsx_st(vec_perm(vec_perm(a, b, a12), c, a123), 0, ptr); \
983
+ static const vec_uchar16 b12 = {21, 0, 6, 22, 0, 7, 23, 0, \
984
+ 8, 24, 0, 9, 25, 0, 10, 26}; \
985
+ static const vec_uchar16 b123 = {0, 21, 2, 3, 22, 5, 6, 23, \
986
+ 8, 9, 24, 11, 12, 25, 14, 15}; \
987
+ vsx_st(vec_perm(vec_perm(a, b, b12), c, b123), 16, ptr); \
988
+ static const vec_uchar16 c12 = {0, 11, 27, 0, 12, 28, 0, 13, \
989
+ 29, 0, 14, 30, 0, 15, 31, 0}; \
990
+ static const vec_uchar16 c123 = {26, 1, 2, 27, 4, 5, 28, 7, \
991
+ 8, 29, 10, 11, 30, 13, 14, 31}; \
992
+ vsx_st(vec_perm(vec_perm(a, b, c12), c, c123), 32, ptr); \
993
+ } \
994
+ VSX_FINLINE(void) \
995
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c) { \
996
+ Tvec v1 = vsx_ld(0, ptr); \
997
+ Tvec v2 = vsx_ld(16, ptr); \
998
+ Tvec v3 = vsx_ld(32, ptr); \
999
+ static const vec_uchar16 a12_perm = {0, 3, 6, 9, 12, 15, 18, 21, \
1000
+ 24, 27, 30, 0, 0, 0, 0, 0}; \
1001
+ static const vec_uchar16 a123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1002
+ 8, 9, 10, 17, 20, 23, 26, 29}; \
1003
+ a = vec_perm(vec_perm(v1, v2, a12_perm), v3, a123_perm); \
1004
+ static const vec_uchar16 b12_perm = {1, 4, 7, 10, 13, 16, 19, 22, \
1005
+ 25, 28, 31, 0, 0, 0, 0, 0}; \
1006
+ static const vec_uchar16 b123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1007
+ 8, 9, 10, 18, 21, 24, 27, 30}; \
1008
+ b = vec_perm(vec_perm(v1, v2, b12_perm), v3, b123_perm); \
1009
+ static const vec_uchar16 c12_perm = {2, 5, 8, 11, 14, 17, 20, 23, \
1010
+ 26, 29, 0, 0, 0, 0, 0, 0}; \
1011
+ static const vec_uchar16 c123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1012
+ 8, 9, 16, 19, 22, 25, 28, 31}; \
1013
+ c = vec_perm(vec_perm(v1, v2, c12_perm), v3, c123_perm); \
1014
+ }
1015
+ VSX_IMPL_ST_INTERLEAVE_3CH_16(uchar, vec_uchar16)
1016
+ VSX_IMPL_ST_INTERLEAVE_3CH_16(schar, vec_char16)
1017
+
1018
+ #define VSX_IMPL_ST_INTERLEAVE_3CH_8(Tp, Tvec) \
1019
+ VSX_FINLINE(void) \
1020
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, Tp *ptr) { \
1021
+ static const vec_uchar16 a12 = {0, 1, 16, 17, 0, 0, 2, 3, \
1022
+ 18, 19, 0, 0, 4, 5, 20, 21}; \
1023
+ static const vec_uchar16 a123 = {0, 1, 2, 3, 16, 17, 6, 7, \
1024
+ 8, 9, 18, 19, 12, 13, 14, 15}; \
1025
+ vsx_st(vec_perm(vec_perm(a, b, a12), c, a123), 0, ptr); \
1026
+ static const vec_uchar16 b12 = {0, 0, 6, 7, 22, 23, 0, 0, \
1027
+ 8, 9, 24, 25, 0, 0, 10, 11}; \
1028
+ static const vec_uchar16 b123 = {20, 21, 2, 3, 4, 5, 22, 23, \
1029
+ 8, 9, 10, 11, 24, 25, 14, 15}; \
1030
+ vsx_st(vec_perm(vec_perm(a, b, b12), c, b123), 8, ptr); \
1031
+ static const vec_uchar16 c12 = {26, 27, 0, 0, 12, 13, 28, 29, \
1032
+ 0, 0, 14, 15, 30, 31, 0, 0}; \
1033
+ static const vec_uchar16 c123 = {0, 1, 26, 27, 4, 5, 6, 7, \
1034
+ 28, 29, 10, 11, 12, 13, 30, 31}; \
1035
+ vsx_st(vec_perm(vec_perm(a, b, c12), c, c123), 16, ptr); \
1036
+ } \
1037
+ VSX_FINLINE(void) \
1038
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c) { \
1039
+ Tvec v1 = vsx_ld(0, ptr); \
1040
+ Tvec v2 = vsx_ld(8, ptr); \
1041
+ Tvec v3 = vsx_ld(16, ptr); \
1042
+ static const vec_uchar16 a12_perm = {0, 1, 6, 7, 12, 13, 18, 19, \
1043
+ 24, 25, 30, 31, 0, 0, 0, 0}; \
1044
+ static const vec_uchar16 a123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1045
+ 8, 9, 10, 11, 20, 21, 26, 27}; \
1046
+ a = vec_perm(vec_perm(v1, v2, a12_perm), v3, a123_perm); \
1047
+ static const vec_uchar16 b12_perm = {2, 3, 8, 9, 14, 15, 20, 21, \
1048
+ 26, 27, 0, 0, 0, 0, 0, 0}; \
1049
+ static const vec_uchar16 b123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1050
+ 8, 9, 16, 17, 22, 23, 28, 29}; \
1051
+ b = vec_perm(vec_perm(v1, v2, b12_perm), v3, b123_perm); \
1052
+ static const vec_uchar16 c12_perm = {4, 5, 10, 11, 16, 17, 22, 23, \
1053
+ 28, 29, 0, 0, 0, 0, 0, 0}; \
1054
+ static const vec_uchar16 c123_perm = {0, 1, 2, 3, 4, 5, 6, 7, \
1055
+ 8, 9, 18, 19, 24, 25, 30, 31}; \
1056
+ c = vec_perm(vec_perm(v1, v2, c12_perm), v3, c123_perm); \
1057
+ }
1058
+ VSX_IMPL_ST_INTERLEAVE_3CH_8(ushort, vec_ushort8)
1059
+ VSX_IMPL_ST_INTERLEAVE_3CH_8(short, vec_short8)
1060
+
1061
+ #define VSX_IMPL_ST_INTERLEAVE_3CH_4(Tp, Tvec) \
1062
+ VSX_FINLINE(void) \
1063
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, Tp *ptr) { \
1064
+ Tvec hbc = vec_mergeh(b, c); \
1065
+ static const vec_uchar16 ahbc = {0, 1, 2, 3, 16, 17, 18, 19, \
1066
+ 20, 21, 22, 23, 4, 5, 6, 7}; \
1067
+ vsx_st(vec_perm(a, hbc, ahbc), 0, ptr); \
1068
+ Tvec lab = vec_mergel(a, b); \
1069
+ vsx_st(vec_sld(lab, hbc, 8), 4, ptr); \
1070
+ static const vec_uchar16 clab = {8, 9, 10, 11, 24, 25, 26, 27, \
1071
+ 28, 29, 30, 31, 12, 13, 14, 15}; \
1072
+ vsx_st(vec_perm(c, lab, clab), 8, ptr); \
1073
+ } \
1074
+ VSX_FINLINE(void) \
1075
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c) { \
1076
+ Tvec v1 = vsx_ld(0, ptr); \
1077
+ Tvec v2 = vsx_ld(4, ptr); \
1078
+ Tvec v3 = vsx_ld(8, ptr); \
1079
+ static const vec_uchar16 flp = {0, 1, 2, 3, 12, 13, 14, 15, \
1080
+ 16, 17, 18, 19, 28, 29, 30, 31}; \
1081
+ a = vec_perm(v1, vec_sld(v3, v2, 8), flp); \
1082
+ static const vec_uchar16 flp2 = {28, 29, 30, 31, 0, 1, 2, 3, \
1083
+ 12, 13, 14, 15, 16, 17, 18, 19}; \
1084
+ b = vec_perm(v2, vec_sld(v1, v3, 8), flp2); \
1085
+ c = vec_perm(vec_sld(v2, v1, 8), v3, flp); \
1086
+ }
1087
+ VSX_IMPL_ST_INTERLEAVE_3CH_4(uint, vec_uint4)
1088
+ VSX_IMPL_ST_INTERLEAVE_3CH_4(int, vec_int4)
1089
+ VSX_IMPL_ST_INTERLEAVE_3CH_4(float, vec_float4)
1090
+
1091
+ #define VSX_IMPL_ST_INTERLEAVE_3CH_2(Tp, Tvec, ld_func, st_func) \
1092
+ VSX_FINLINE(void) \
1093
+ vec_st_interleave(const Tvec &a, const Tvec &b, const Tvec &c, Tp *ptr) { \
1094
+ st_func(vec_mergeh(a, b), 0, ptr); \
1095
+ st_func(vec_permi(c, a, 1), 2, ptr); \
1096
+ st_func(vec_mergel(b, c), 4, ptr); \
1097
+ } \
1098
+ VSX_FINLINE(void) \
1099
+ vec_ld_deinterleave(const Tp *ptr, Tvec &a, Tvec &b, Tvec &c) { \
1100
+ Tvec v1 = ld_func(0, ptr); \
1101
+ Tvec v2 = ld_func(2, ptr); \
1102
+ Tvec v3 = ld_func(4, ptr); \
1103
+ a = vec_permi(v1, v2, 1); \
1104
+ b = vec_permi(v1, v3, 2); \
1105
+ c = vec_permi(v2, v3, 1); \
1106
+ }
1107
+ VSX_IMPL_ST_INTERLEAVE_3CH_2(int64, vec_dword2, vsx_ld2, vsx_st2)
1108
+ VSX_IMPL_ST_INTERLEAVE_3CH_2(uint64, vec_udword2, vsx_ld2, vsx_st2)
1109
+ VSX_IMPL_ST_INTERLEAVE_3CH_2(double, vec_double2, vsx_ld, vsx_st)
1110
+
1111
+ #endif // CV_VSX
1112
+
1113
+ //! @}
1114
+
1115
+ #endif // OPENCV_HAL_VSX_UTILS_HPP