react-native-executorch 0.4.10 → 0.5.0-nightly-6f4dd53-20251211

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 (881) hide show
  1. package/README.md +77 -71
  2. package/android/CMakeLists.txt +29 -0
  3. package/android/build.gradle +76 -13
  4. package/android/libs/classes.jar +0 -0
  5. package/android/src/main/cpp/CMakeLists.txt +109 -0
  6. package/android/src/main/cpp/ETInstallerModule.cpp +76 -0
  7. package/android/src/main/cpp/ETInstallerModule.h +43 -0
  8. package/android/src/main/java/com/swmansion/rnexecutorch/ETInstaller.kt +66 -0
  9. package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +6 -124
  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 +113 -0
  16. package/common/rnexecutorch/RnExecutorchInstaller.h +87 -0
  17. package/common/rnexecutorch/TokenizerModule.cpp +52 -0
  18. package/common/rnexecutorch/TokenizerModule.h +29 -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 +111 -0
  25. package/common/rnexecutorch/data_processing/Numerical.h +77 -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 +19 -0
  29. package/common/rnexecutorch/data_processing/dsp.h +12 -0
  30. package/common/rnexecutorch/data_processing/gzip.cpp +47 -0
  31. package/common/rnexecutorch/data_processing/gzip.h +7 -0
  32. package/common/rnexecutorch/host_objects/JSTensorViewIn.h +12 -0
  33. package/common/rnexecutorch/host_objects/JSTensorViewOut.h +22 -0
  34. package/common/rnexecutorch/host_objects/JsiConversions.h +418 -0
  35. package/common/rnexecutorch/host_objects/ModelHostObject.h +313 -0
  36. package/common/rnexecutorch/jsi/JsiHostObject.cpp +108 -0
  37. package/common/rnexecutorch/jsi/JsiHostObject.h +87 -0
  38. package/common/rnexecutorch/jsi/OwningArrayBuffer.h +57 -0
  39. package/common/rnexecutorch/jsi/Promise.cpp +20 -0
  40. package/common/rnexecutorch/jsi/Promise.h +69 -0
  41. package/common/rnexecutorch/jsi/RuntimeAwareCache.h +58 -0
  42. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.cpp +53 -0
  43. package/common/rnexecutorch/jsi/RuntimeLifecycleMonitor.h +35 -0
  44. package/common/rnexecutorch/metaprogramming/ConstructorHelpers.h +133 -0
  45. package/common/rnexecutorch/metaprogramming/FunctionHelpers.h +50 -0
  46. package/common/rnexecutorch/metaprogramming/TypeConcepts.h +37 -0
  47. package/common/rnexecutorch/models/BaseModel.cpp +183 -0
  48. package/common/rnexecutorch/models/BaseModel.h +61 -0
  49. package/common/rnexecutorch/models/classification/Classification.cpp +72 -0
  50. package/common/rnexecutorch/models/classification/Classification.h +31 -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 +19 -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 +28 -0
  56. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.cpp +60 -0
  57. package/common/rnexecutorch/models/embeddings/text/TextEmbeddings.h +31 -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 +168 -0
  60. package/common/rnexecutorch/models/image_segmentation/ImageSegmentation.h +50 -0
  61. package/common/rnexecutorch/models/llm/LLM.cpp +98 -0
  62. package/common/rnexecutorch/models/llm/LLM.h +38 -0
  63. package/{ios/RnExecutorch/utils/Constants.mm → common/rnexecutorch/models/object_detection/Constants.h} +9 -2
  64. package/common/rnexecutorch/models/object_detection/ObjectDetection.cpp +82 -0
  65. package/common/rnexecutorch/models/object_detection/ObjectDetection.h +37 -0
  66. package/common/rnexecutorch/models/object_detection/Types.h +13 -0
  67. package/{ios/RnExecutorch/utils/ObjectDetectionUtils.mm → common/rnexecutorch/models/object_detection/Utils.cpp} +17 -35
  68. package/common/rnexecutorch/models/object_detection/Utils.h +11 -0
  69. package/common/rnexecutorch/models/ocr/CTCLabelConverter.cpp +88 -0
  70. package/common/rnexecutorch/models/ocr/CTCLabelConverter.h +29 -0
  71. package/common/rnexecutorch/models/ocr/Constants.h +41 -0
  72. package/common/rnexecutorch/models/ocr/Detector.cpp +100 -0
  73. package/common/rnexecutorch/models/ocr/Detector.h +30 -0
  74. package/common/rnexecutorch/models/ocr/OCR.cpp +53 -0
  75. package/common/rnexecutorch/models/ocr/OCR.h +44 -0
  76. package/common/rnexecutorch/models/ocr/RecognitionHandler.cpp +108 -0
  77. package/common/rnexecutorch/models/ocr/RecognitionHandler.h +42 -0
  78. package/common/rnexecutorch/models/ocr/Recognizer.cpp +80 -0
  79. package/common/rnexecutorch/models/ocr/Recognizer.h +36 -0
  80. package/common/rnexecutorch/models/ocr/Types.h +35 -0
  81. package/common/rnexecutorch/models/ocr/utils/DetectorUtils.cpp +710 -0
  82. package/common/rnexecutorch/models/ocr/utils/DetectorUtils.h +81 -0
  83. package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.cpp +159 -0
  84. package/common/rnexecutorch/models/ocr/utils/RecognitionHandlerUtils.h +72 -0
  85. package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.cpp +204 -0
  86. package/common/rnexecutorch/models/ocr/utils/RecognizerUtils.h +71 -0
  87. package/common/rnexecutorch/models/speech_to_text/SpeechToText.cpp +125 -0
  88. package/common/rnexecutorch/models/speech_to_text/SpeechToText.h +57 -0
  89. package/common/rnexecutorch/models/speech_to_text/asr/ASR.cpp +303 -0
  90. package/common/rnexecutorch/models/speech_to_text/asr/ASR.h +61 -0
  91. package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.cpp +82 -0
  92. package/common/rnexecutorch/models/speech_to_text/stream/HypothesisBuffer.h +25 -0
  93. package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.cpp +99 -0
  94. package/common/rnexecutorch/models/speech_to_text/stream/OnlineASRProcessor.h +33 -0
  95. package/common/rnexecutorch/models/speech_to_text/types/DecodingOptions.h +15 -0
  96. package/common/rnexecutorch/models/speech_to_text/types/GenerationResult.h +12 -0
  97. package/common/rnexecutorch/models/speech_to_text/types/ProcessResult.h +12 -0
  98. package/common/rnexecutorch/models/speech_to_text/types/Segment.h +14 -0
  99. package/common/rnexecutorch/models/speech_to_text/types/Word.h +13 -0
  100. package/common/rnexecutorch/models/style_transfer/StyleTransfer.cpp +55 -0
  101. package/common/rnexecutorch/models/style_transfer/StyleTransfer.h +35 -0
  102. package/common/rnexecutorch/models/text_to_image/Constants.h +9 -0
  103. package/common/rnexecutorch/models/text_to_image/Decoder.cpp +32 -0
  104. package/common/rnexecutorch/models/text_to_image/Decoder.h +24 -0
  105. package/common/rnexecutorch/models/text_to_image/Encoder.cpp +44 -0
  106. package/common/rnexecutorch/models/text_to_image/Encoder.h +32 -0
  107. package/common/rnexecutorch/models/text_to_image/Scheduler.cpp +152 -0
  108. package/common/rnexecutorch/models/text_to_image/Scheduler.h +41 -0
  109. package/common/rnexecutorch/models/text_to_image/TextToImage.cpp +141 -0
  110. package/common/rnexecutorch/models/text_to_image/TextToImage.h +64 -0
  111. package/common/rnexecutorch/models/text_to_image/UNet.cpp +38 -0
  112. package/common/rnexecutorch/models/text_to_image/UNet.h +28 -0
  113. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.cpp +93 -0
  114. package/common/rnexecutorch/models/vertical_ocr/VerticalDetector.h +49 -0
  115. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.cpp +180 -0
  116. package/common/rnexecutorch/models/vertical_ocr/VerticalOCR.h +85 -0
  117. package/common/rnexecutorch/models/voice_activity_detection/Constants.h +27 -0
  118. package/common/rnexecutorch/models/voice_activity_detection/Types.h +12 -0
  119. package/common/rnexecutorch/models/voice_activity_detection/Utils.cpp +15 -0
  120. package/common/rnexecutorch/models/voice_activity_detection/Utils.h +13 -0
  121. package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.cpp +160 -0
  122. package/common/rnexecutorch/models/voice_activity_detection/VoiceActivityDetection.h +36 -0
  123. package/common/rnexecutorch/tests/CMakeLists.txt +30 -0
  124. package/common/rnexecutorch/tests/LogTest.cpp +530 -0
  125. package/common/rnexecutorch/tests/NumericalTest.cpp +110 -0
  126. package/common/rnexecutorch/tests/README.md +37 -0
  127. package/common/rnexecutorch/threads/GlobalThreadPool.h +84 -0
  128. package/common/rnexecutorch/threads/HighPerformanceThreadPool.h +364 -0
  129. package/common/rnexecutorch/threads/utils/ThreadUtils.h +29 -0
  130. package/common/runner/arange_util.cpp +44 -0
  131. package/common/runner/arange_util.h +37 -0
  132. package/common/runner/constants.h +28 -0
  133. package/common/runner/io_manager.h +240 -0
  134. package/common/runner/irunner.h +119 -0
  135. package/common/runner/kernel_includes.h +23 -0
  136. package/common/runner/runner.cpp +369 -0
  137. package/common/runner/runner.h +85 -0
  138. package/common/runner/sampler.cpp +201 -0
  139. package/common/runner/sampler.h +67 -0
  140. package/common/runner/stats.h +161 -0
  141. package/common/runner/text_decoder_runner.cpp +79 -0
  142. package/common/runner/text_decoder_runner.h +126 -0
  143. package/common/runner/text_prefiller.cpp +125 -0
  144. package/common/runner/text_prefiller.h +85 -0
  145. package/common/runner/text_token_generator.h +205 -0
  146. package/common/runner/util.h +153 -0
  147. package/ios/RnExecutorch/ETInstaller.h +8 -0
  148. package/ios/RnExecutorch/ETInstaller.mm +56 -0
  149. package/ios/RnExecutorch.xcodeproj/project.pbxproj +73 -23
  150. package/lib/module/Error.js +3 -0
  151. package/lib/module/Error.js.map +1 -1
  152. package/lib/module/common/Logger.js +23 -0
  153. package/lib/module/common/Logger.js.map +1 -0
  154. package/lib/module/constants/directories.js +1 -1
  155. package/lib/module/constants/directories.js.map +1 -1
  156. package/lib/module/constants/llmDefaults.js +8 -0
  157. package/lib/module/constants/llmDefaults.js.map +1 -1
  158. package/lib/module/constants/modelUrls.js +356 -84
  159. package/lib/module/constants/modelUrls.js.map +1 -1
  160. package/lib/module/constants/ocr/models.js +181 -286
  161. package/lib/module/constants/ocr/models.js.map +1 -1
  162. package/lib/module/constants/ocr/symbols.js +66 -65
  163. package/lib/module/constants/ocr/symbols.js.map +1 -1
  164. package/lib/module/controllers/LLMController.js +53 -23
  165. package/lib/module/controllers/LLMController.js.map +1 -1
  166. package/lib/module/controllers/OCRController.js +17 -10
  167. package/lib/module/controllers/OCRController.js.map +1 -1
  168. package/lib/module/controllers/VerticalOCRController.js +17 -10
  169. package/lib/module/controllers/VerticalOCRController.js.map +1 -1
  170. package/lib/module/hooks/computer_vision/useClassification.js +4 -4
  171. package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
  172. package/lib/module/hooks/computer_vision/useImageEmbeddings.js +13 -0
  173. package/lib/module/hooks/computer_vision/useImageEmbeddings.js.map +1 -0
  174. package/lib/module/hooks/computer_vision/useImageSegmentation.js +2 -2
  175. package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -1
  176. package/lib/module/hooks/computer_vision/useOCR.js +16 -17
  177. package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
  178. package/lib/module/hooks/computer_vision/useObjectDetection.js +3 -3
  179. package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
  180. package/lib/module/hooks/computer_vision/useStyleTransfer.js +3 -3
  181. package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
  182. package/lib/module/hooks/computer_vision/useTextToImage.js +57 -0
  183. package/lib/module/hooks/computer_vision/useTextToImage.js.map +1 -0
  184. package/lib/module/hooks/computer_vision/useVerticalOCR.js +18 -19
  185. package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
  186. package/lib/module/hooks/general/useExecutorchModule.js +1 -1
  187. package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
  188. package/lib/module/hooks/natural_language_processing/useLLM.js +30 -29
  189. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  190. package/lib/module/hooks/natural_language_processing/useSpeechToText.js +72 -33
  191. package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
  192. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +2 -3
  193. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -1
  194. package/lib/module/hooks/natural_language_processing/useTokenizer.js +19 -18
  195. package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -1
  196. package/lib/module/hooks/natural_language_processing/useVAD.js +13 -0
  197. package/lib/module/hooks/natural_language_processing/useVAD.js.map +1 -0
  198. package/lib/module/hooks/useModule.js +13 -9
  199. package/lib/module/hooks/useModule.js.map +1 -1
  200. package/lib/module/index.js +21 -3
  201. package/lib/module/index.js.map +1 -1
  202. package/lib/module/modules/BaseModule.js +9 -14
  203. package/lib/module/modules/BaseModule.js.map +1 -1
  204. package/lib/module/modules/computer_vision/ClassificationModule.js +11 -6
  205. package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
  206. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js +19 -0
  207. package/lib/module/modules/computer_vision/ImageEmbeddingsModule.js.map +1 -0
  208. package/lib/module/modules/computer_vision/ImageSegmentationModule.js +20 -18
  209. package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -1
  210. package/lib/module/modules/computer_vision/OCRModule.js +13 -10
  211. package/lib/module/modules/computer_vision/OCRModule.js.map +1 -1
  212. package/lib/module/modules/computer_vision/ObjectDetectionModule.js +11 -6
  213. package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
  214. package/lib/module/modules/computer_vision/StyleTransferModule.js +11 -6
  215. package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
  216. package/lib/module/modules/computer_vision/TextToImageModule.js +48 -0
  217. package/lib/module/modules/computer_vision/TextToImageModule.js.map +1 -0
  218. package/lib/module/modules/computer_vision/VerticalOCRModule.js +15 -10
  219. package/lib/module/modules/computer_vision/VerticalOCRModule.js.map +1 -1
  220. package/lib/module/modules/general/ExecutorchModule.js +8 -34
  221. package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
  222. package/lib/module/modules/natural_language_processing/LLMModule.js +25 -24
  223. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  224. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +109 -27
  225. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
  226. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +13 -6
  227. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -1
  228. package/lib/module/modules/natural_language_processing/TokenizerModule.js +20 -14
  229. package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -1
  230. package/lib/module/modules/natural_language_processing/VADModule.js +19 -0
  231. package/lib/module/modules/natural_language_processing/VADModule.js.map +1 -0
  232. package/lib/module/native/NativeETInstaller.js +5 -0
  233. package/lib/module/native/NativeETInstaller.js.map +1 -0
  234. package/lib/module/native/RnExecutorchModules.js +2 -12
  235. package/lib/module/native/RnExecutorchModules.js.map +1 -1
  236. package/lib/module/types/common.js +25 -8
  237. package/lib/module/types/common.js.map +1 -1
  238. package/lib/module/types/llm.js.map +1 -1
  239. package/lib/module/types/stt.js +1 -79
  240. package/lib/module/types/stt.js.map +1 -1
  241. package/lib/module/types/vad.js +2 -0
  242. package/lib/module/types/vad.js.map +1 -0
  243. package/lib/module/utils/ResourceFetcher.js +275 -114
  244. package/lib/module/utils/ResourceFetcher.js.map +1 -1
  245. package/lib/module/utils/ResourceFetcherUtils.js +155 -0
  246. package/lib/module/utils/ResourceFetcherUtils.js.map +1 -0
  247. package/lib/module/utils/llm.js +41 -1
  248. package/lib/module/utils/llm.js.map +1 -1
  249. package/lib/typescript/Error.d.ts +3 -0
  250. package/lib/typescript/Error.d.ts.map +1 -1
  251. package/lib/typescript/common/Logger.d.ts +9 -0
  252. package/lib/typescript/common/Logger.d.ts.map +1 -0
  253. package/lib/typescript/constants/llmDefaults.d.ts +1 -0
  254. package/lib/typescript/constants/llmDefaults.d.ts.map +1 -1
  255. package/lib/typescript/constants/modelUrls.d.ts +263 -79
  256. package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
  257. package/lib/typescript/constants/ocr/models.d.ts +882 -284
  258. package/lib/typescript/constants/ocr/models.d.ts.map +1 -1
  259. package/lib/typescript/constants/ocr/symbols.d.ts +1 -1
  260. package/lib/typescript/constants/ocr/symbols.d.ts.map +1 -1
  261. package/lib/typescript/controllers/LLMController.d.ts +8 -7
  262. package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
  263. package/lib/typescript/controllers/OCRController.d.ts +5 -6
  264. package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
  265. package/lib/typescript/controllers/VerticalOCRController.d.ts +5 -6
  266. package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
  267. package/lib/typescript/hooks/computer_vision/useClassification.d.ts +8 -6
  268. package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
  269. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts +16 -0
  270. package/lib/typescript/hooks/computer_vision/useImageEmbeddings.d.ts.map +1 -0
  271. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +5 -3
  272. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -1
  273. package/lib/typescript/hooks/computer_vision/useOCR.d.ts +5 -5
  274. package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
  275. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -3
  276. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
  277. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +5 -3
  278. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
  279. package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts +22 -0
  280. package/lib/typescript/hooks/computer_vision/useTextToImage.d.ts.map +1 -0
  281. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +4 -6
  282. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
  283. package/lib/typescript/hooks/general/useExecutorchModule.d.ts +1 -1
  284. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -4
  285. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  286. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +15 -22
  287. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
  288. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +9 -5
  289. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -1
  290. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +6 -4
  291. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -1
  292. package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts +16 -0
  293. package/lib/typescript/hooks/natural_language_processing/useVAD.d.ts.map +1 -0
  294. package/lib/typescript/hooks/useModule.d.ts +8 -5
  295. package/lib/typescript/hooks/useModule.d.ts.map +1 -1
  296. package/lib/typescript/index.d.ts +26 -3
  297. package/lib/typescript/index.d.ts.map +1 -1
  298. package/lib/typescript/modules/BaseModule.d.ts +7 -6
  299. package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
  300. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +4 -4
  301. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
  302. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts +9 -0
  303. package/lib/typescript/modules/computer_vision/ImageEmbeddingsModule.d.ts.map +1 -0
  304. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +7 -27
  305. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -1
  306. package/lib/typescript/modules/computer_vision/OCRModule.d.ts +8 -7
  307. package/lib/typescript/modules/computer_vision/OCRModule.d.ts.map +1 -1
  308. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +5 -3
  309. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
  310. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +4 -3
  311. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
  312. package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts +16 -0
  313. package/lib/typescript/modules/computer_vision/TextToImageModule.d.ts.map +1 -0
  314. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts +7 -8
  315. package/lib/typescript/modules/computer_vision/VerticalOCRModule.d.ts.map +1 -1
  316. package/lib/typescript/modules/general/ExecutorchModule.d.ts +4 -7
  317. package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
  318. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +19 -17
  319. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  320. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +17 -13
  321. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
  322. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +5 -3
  323. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -1
  324. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +10 -9
  325. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -1
  326. package/lib/typescript/modules/natural_language_processing/VADModule.d.ts +10 -0
  327. package/lib/typescript/modules/natural_language_processing/VADModule.d.ts.map +1 -0
  328. package/lib/typescript/native/{NativeStyleTransfer.d.ts → NativeETInstaller.d.ts} +2 -3
  329. package/lib/typescript/native/NativeETInstaller.d.ts.map +1 -0
  330. package/lib/typescript/native/RnExecutorchModules.d.ts +3 -23
  331. package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
  332. package/lib/typescript/types/common.d.ts +30 -2
  333. package/lib/typescript/types/common.d.ts.map +1 -1
  334. package/lib/typescript/types/llm.d.ts +9 -1
  335. package/lib/typescript/types/llm.d.ts.map +1 -1
  336. package/lib/typescript/types/stt.d.ts +9 -88
  337. package/lib/typescript/types/stt.d.ts.map +1 -1
  338. package/lib/typescript/types/vad.d.ts +5 -0
  339. package/lib/typescript/types/vad.d.ts.map +1 -0
  340. package/lib/typescript/utils/ResourceFetcher.d.ts +47 -10
  341. package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -1
  342. package/lib/typescript/utils/ResourceFetcherUtils.d.ts +55 -0
  343. package/lib/typescript/utils/ResourceFetcherUtils.d.ts.map +1 -0
  344. package/lib/typescript/utils/llm.d.ts +4 -0
  345. package/lib/typescript/utils/llm.d.ts.map +1 -1
  346. package/package.json +32 -68
  347. package/react-native-executorch.podspec +62 -4
  348. package/src/Error.ts +3 -0
  349. package/src/common/Logger.ts +25 -0
  350. package/src/constants/directories.ts +1 -1
  351. package/src/constants/llmDefaults.ts +11 -0
  352. package/src/constants/modelUrls.ts +433 -168
  353. package/src/constants/ocr/models.ts +826 -395
  354. package/src/constants/ocr/symbols.ts +66 -65
  355. package/src/controllers/LLMController.ts +76 -36
  356. package/src/controllers/OCRController.ts +25 -16
  357. package/src/controllers/VerticalOCRController.ts +25 -15
  358. package/src/hooks/computer_vision/useClassification.ts +8 -9
  359. package/src/hooks/computer_vision/useImageEmbeddings.ts +15 -0
  360. package/src/hooks/computer_vision/useImageSegmentation.ts +3 -6
  361. package/src/hooks/computer_vision/useOCR.ts +32 -25
  362. package/src/hooks/computer_vision/useObjectDetection.ts +4 -7
  363. package/src/hooks/computer_vision/useStyleTransfer.ts +4 -4
  364. package/src/hooks/computer_vision/useTextToImage.ts +92 -0
  365. package/src/hooks/computer_vision/useVerticalOCR.ts +33 -31
  366. package/src/hooks/general/useExecutorchModule.ts +1 -1
  367. package/src/hooks/natural_language_processing/useLLM.ts +54 -31
  368. package/src/hooks/natural_language_processing/useSpeechToText.ts +96 -88
  369. package/src/hooks/natural_language_processing/useTextEmbeddings.ts +9 -9
  370. package/src/hooks/natural_language_processing/useTokenizer.ts +21 -21
  371. package/src/hooks/natural_language_processing/useVAD.ts +15 -0
  372. package/src/hooks/useModule.ts +23 -13
  373. package/src/index.ts +126 -0
  374. package/src/modules/BaseModule.ts +17 -22
  375. package/src/modules/computer_vision/ClassificationModule.ts +18 -9
  376. package/src/modules/computer_vision/ImageEmbeddingsModule.ts +26 -0
  377. package/src/modules/computer_vision/ImageSegmentationModule.ts +34 -26
  378. package/src/modules/computer_vision/OCRModule.ts +23 -15
  379. package/src/modules/computer_vision/ObjectDetectionModule.ts +22 -9
  380. package/src/modules/computer_vision/StyleTransferModule.ts +18 -9
  381. package/src/modules/computer_vision/TextToImageModule.ts +93 -0
  382. package/src/modules/computer_vision/VerticalOCRModule.ts +25 -21
  383. package/src/modules/general/ExecutorchModule.ts +16 -46
  384. package/src/modules/natural_language_processing/LLMModule.ts +41 -32
  385. package/src/modules/natural_language_processing/SpeechToTextModule.ts +164 -66
  386. package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +25 -10
  387. package/src/modules/natural_language_processing/TokenizerModule.ts +27 -17
  388. package/src/modules/natural_language_processing/VADModule.ts +27 -0
  389. package/src/native/NativeETInstaller.ts +8 -0
  390. package/src/native/RnExecutorchModules.ts +4 -50
  391. package/src/types/common.ts +40 -12
  392. package/src/types/llm.ts +10 -0
  393. package/src/types/stt.ts +87 -90
  394. package/src/types/vad.ts +4 -0
  395. package/src/utils/ResourceFetcher.ts +342 -120
  396. package/src/utils/ResourceFetcherUtils.ts +184 -0
  397. package/src/utils/llm.ts +65 -1
  398. package/third-party/android/libs/cpuinfo/arm64-v8a/libcpuinfo.so +0 -0
  399. package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
  400. package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
  401. package/third-party/android/libs/opencv/arm64-v8a/libopencv_core.a +0 -0
  402. package/third-party/android/libs/opencv/arm64-v8a/libopencv_features2d.a +0 -0
  403. package/third-party/android/libs/opencv/arm64-v8a/libopencv_highgui.a +0 -0
  404. package/third-party/android/libs/opencv/arm64-v8a/libopencv_imgproc.a +0 -0
  405. package/third-party/android/libs/opencv/arm64-v8a/libopencv_photo.a +0 -0
  406. package/third-party/android/libs/opencv/arm64-v8a/libopencv_video.a +0 -0
  407. package/third-party/android/libs/opencv/x86_64/libopencv_core.a +0 -0
  408. package/third-party/android/libs/opencv/x86_64/libopencv_features2d.a +0 -0
  409. package/third-party/android/libs/opencv/x86_64/libopencv_highgui.a +0 -0
  410. package/third-party/android/libs/opencv/x86_64/libopencv_imgproc.a +0 -0
  411. package/third-party/android/libs/opencv/x86_64/libopencv_photo.a +0 -0
  412. package/third-party/android/libs/opencv/x86_64/libopencv_video.a +0 -0
  413. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv.a +0 -0
  414. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_hal.a +0 -0
  415. package/third-party/android/libs/opencv-third-party/arm64-v8a/libkleidicv_thread.a +0 -0
  416. package/third-party/android/libs/pthreadpool/arm64-v8a/libpthreadpool.so +0 -0
  417. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libsentencepiece.a +0 -0
  418. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_c.a +0 -0
  419. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_cpp.a +0 -0
  420. package/{ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib → third-party/android/libs/tokenizers-cpp/x86_64/libsentencepiece.a} +0 -0
  421. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_c.a +0 -0
  422. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_cpp.a +0 -0
  423. package/third-party/include/c10/macros/Export.h +1 -0
  424. package/third-party/include/c10/macros/Macros.h +1 -0
  425. package/third-party/include/c10/util/BFloat16-inl.h +1 -0
  426. package/third-party/include/c10/util/BFloat16-math.h +266 -0
  427. package/third-party/include/c10/util/BFloat16.h +1 -0
  428. package/third-party/include/c10/util/Half-inl.h +1 -0
  429. package/third-party/include/c10/util/Half.h +8 -0
  430. package/third-party/include/c10/util/TypeSafeSignMath.h +1 -0
  431. package/third-party/include/c10/util/bit_cast.h +1 -0
  432. package/third-party/include/c10/util/complex.h +72 -0
  433. package/third-party/include/c10/util/complex_math.h +399 -0
  434. package/third-party/include/c10/util/complex_utils.h +41 -0
  435. package/third-party/include/c10/util/floating_point_utils.h +1 -0
  436. package/third-party/include/c10/util/irange.h +107 -0
  437. package/third-party/include/c10/util/llvmMathExtras.h +866 -0
  438. package/third-party/include/c10/util/overflows.h +95 -0
  439. package/third-party/include/c10/util/safe_numerics.h +97 -0
  440. package/third-party/include/cpuinfo/cpuinfo.h +2305 -0
  441. package/third-party/include/executorch/ExecuTorch.h +13 -0
  442. package/third-party/include/executorch/ExecuTorchError.h +90 -0
  443. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLM.h +12 -0
  444. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMConfig.h +56 -0
  445. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMError.h +16 -0
  446. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMMultimodalRunner.h +227 -0
  447. package/third-party/include/executorch/ExecuTorchLLM/ExecuTorchLLMTextRunner.h +97 -0
  448. package/third-party/include/executorch/ExecuTorchLLM/module.modulemap +4 -0
  449. package/third-party/include/executorch/ExecuTorchLog.h +77 -0
  450. package/third-party/include/executorch/ExecuTorchModule.h +563 -0
  451. package/third-party/include/executorch/ExecuTorchTensor.h +1421 -0
  452. package/third-party/include/executorch/ExecuTorchValue.h +265 -0
  453. package/third-party/include/executorch/extension/module/bundled_module.h +131 -0
  454. package/third-party/include/executorch/extension/module/module.h +649 -0
  455. package/third-party/include/executorch/extension/tensor/tensor.h +14 -0
  456. package/third-party/include/executorch/extension/tensor/tensor_accessor.h +190 -0
  457. package/third-party/include/executorch/extension/tensor/tensor_ptr.h +409 -0
  458. package/third-party/include/executorch/extension/tensor/tensor_ptr_maker.h +653 -0
  459. package/third-party/include/executorch/extension/threadpool/cpuinfo_utils.h +24 -0
  460. package/third-party/include/executorch/extension/threadpool/threadpool.h +95 -0
  461. package/third-party/include/executorch/runtime/backend/backend_execution_context.h +71 -0
  462. package/third-party/include/executorch/runtime/backend/backend_init_context.h +84 -0
  463. package/third-party/include/executorch/runtime/backend/backend_option_context.h +34 -0
  464. package/third-party/include/executorch/runtime/backend/interface.h +227 -0
  465. package/third-party/include/executorch/runtime/backend/options.h +206 -0
  466. package/third-party/include/executorch/runtime/core/array_ref.h +235 -0
  467. package/third-party/include/executorch/runtime/core/data_loader.h +136 -0
  468. package/third-party/include/executorch/runtime/core/defines.h +20 -0
  469. package/third-party/include/executorch/runtime/core/error.h +256 -0
  470. package/third-party/include/executorch/runtime/core/evalue.h +515 -0
  471. package/third-party/include/executorch/runtime/core/event_tracer.h +580 -0
  472. package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +332 -0
  473. package/third-party/include/executorch/runtime/core/event_tracer_hooks_delegate.h +197 -0
  474. package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +170 -0
  475. package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +264 -0
  476. package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +1313 -0
  477. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h +21 -0
  478. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_shape_to_c_string.h +69 -0
  479. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +1251 -0
  480. package/third-party/include/executorch/runtime/core/freeable_buffer.h +107 -0
  481. package/third-party/include/executorch/runtime/core/function_ref.h +100 -0
  482. package/third-party/include/executorch/runtime/core/hierarchical_allocator.h +107 -0
  483. package/third-party/include/executorch/runtime/core/memory_allocator.h +208 -0
  484. package/third-party/include/executorch/runtime/core/named_data_map.h +76 -0
  485. package/third-party/include/executorch/runtime/core/portable_type/bfloat16.h +27 -0
  486. package/third-party/include/executorch/runtime/core/portable_type/bfloat16_math.h +14 -0
  487. package/third-party/include/executorch/runtime/core/portable_type/bits_types.h +83 -0
  488. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +1 -0
  489. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +1 -0
  490. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +1 -0
  491. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-math.h +266 -0
  492. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +1 -0
  493. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half-inl.h +1 -0
  494. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +8 -0
  495. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/TypeSafeSignMath.h +1 -0
  496. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +1 -0
  497. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex.h +72 -0
  498. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_math.h +399 -0
  499. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_utils.h +41 -0
  500. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/floating_point_utils.h +1 -0
  501. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +107 -0
  502. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/llvmMathExtras.h +866 -0
  503. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/overflows.h +95 -0
  504. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/safe_numerics.h +97 -0
  505. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h +154 -0
  506. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Macros.h +553 -0
  507. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/BFloat16.h +477 -0
  508. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/Half.h +781 -0
  509. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/TypeSafeSignMath.h +141 -0
  510. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/bit_cast.h +49 -0
  511. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/complex.h +593 -0
  512. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/util/floating_point_utils.h +38 -0
  513. package/third-party/include/executorch/runtime/core/portable_type/complex.h +21 -0
  514. package/third-party/include/executorch/runtime/core/portable_type/device.h +70 -0
  515. package/third-party/include/executorch/runtime/core/portable_type/half.h +27 -0
  516. package/third-party/include/executorch/runtime/core/portable_type/optional.h +36 -0
  517. package/third-party/include/executorch/runtime/core/portable_type/qint_types.h +83 -0
  518. package/third-party/include/executorch/runtime/core/portable_type/scalar.h +110 -0
  519. package/third-party/include/executorch/runtime/core/portable_type/scalar_type.h +154 -0
  520. package/third-party/include/executorch/runtime/core/portable_type/string_view.h +29 -0
  521. package/third-party/include/executorch/runtime/core/portable_type/tensor.h +142 -0
  522. package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +281 -0
  523. package/third-party/include/executorch/runtime/core/portable_type/tensor_options.h +60 -0
  524. package/third-party/include/executorch/runtime/core/result.h +258 -0
  525. package/third-party/include/executorch/runtime/core/span.h +97 -0
  526. package/third-party/include/executorch/runtime/core/tag.h +90 -0
  527. package/third-party/include/executorch/runtime/core/tensor_layout.h +79 -0
  528. package/third-party/include/executorch/runtime/core/tensor_shape_dynamism.h +39 -0
  529. package/third-party/include/executorch/runtime/executor/memory_manager.h +113 -0
  530. package/third-party/include/executorch/runtime/executor/merged_data_map.h +142 -0
  531. package/third-party/include/executorch/runtime/executor/method.h +412 -0
  532. package/third-party/include/executorch/runtime/executor/method_meta.h +298 -0
  533. package/third-party/include/executorch/runtime/executor/program.h +309 -0
  534. package/third-party/include/executorch/runtime/executor/pte_data_map.h +145 -0
  535. package/third-party/include/executorch/runtime/executor/tensor_parser.h +157 -0
  536. package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +122 -0
  537. package/third-party/include/executorch/runtime/kernel/operator_registry.h +280 -0
  538. package/third-party/include/executorch/runtime/platform/abort.h +36 -0
  539. package/third-party/include/executorch/runtime/platform/assert.h +119 -0
  540. package/third-party/include/executorch/runtime/platform/clock.h +43 -0
  541. package/third-party/include/executorch/runtime/platform/compat_unistd.h +75 -0
  542. package/third-party/include/executorch/runtime/platform/compiler.h +201 -0
  543. package/third-party/include/executorch/runtime/platform/log.h +177 -0
  544. package/third-party/include/executorch/runtime/platform/platform.h +259 -0
  545. package/third-party/include/executorch/runtime/platform/profiler.h +292 -0
  546. package/third-party/include/executorch/runtime/platform/runtime.h +35 -0
  547. package/third-party/include/executorch/runtime/platform/system.h +49 -0
  548. package/third-party/include/executorch/runtime/platform/types.h +24 -0
  549. package/third-party/include/executorch/schema/extended_header.h +85 -0
  550. package/third-party/include/headeronly/macros/Export.h +88 -0
  551. package/third-party/include/opencv2/core/affine.hpp +676 -0
  552. package/third-party/include/opencv2/core/async.hpp +107 -0
  553. package/third-party/include/opencv2/core/base.hpp +735 -0
  554. package/third-party/include/opencv2/core/bindings_utils.hpp +279 -0
  555. package/third-party/include/opencv2/core/bufferpool.hpp +39 -0
  556. package/third-party/include/opencv2/core/check.hpp +231 -0
  557. package/third-party/include/opencv2/core/core.hpp +55 -0
  558. package/third-party/include/opencv2/core/core_c.h +3261 -0
  559. package/third-party/include/opencv2/core/cv_cpu_dispatch.h +404 -0
  560. package/third-party/include/opencv2/core/cv_cpu_helper.h +856 -0
  561. package/third-party/include/opencv2/core/cvdef.h +1003 -0
  562. package/third-party/include/opencv2/core/cvstd.hpp +196 -0
  563. package/third-party/include/opencv2/core/cvstd.inl.hpp +188 -0
  564. package/third-party/include/opencv2/core/cvstd_wrapper.hpp +187 -0
  565. package/third-party/include/opencv2/core/detail/async_promise.hpp +73 -0
  566. package/third-party/include/opencv2/core/detail/dispatch_helper.impl.hpp +48 -0
  567. package/third-party/include/opencv2/core/detail/exception_ptr.hpp +24 -0
  568. package/third-party/include/opencv2/core/dualquaternion.hpp +1054 -0
  569. package/third-party/include/opencv2/core/dualquaternion.inl.hpp +464 -0
  570. package/third-party/include/opencv2/core/eigen.hpp +405 -0
  571. package/third-party/include/opencv2/core/fast_math.hpp +433 -0
  572. package/third-party/include/opencv2/core/hal/hal.hpp +451 -0
  573. package/third-party/include/opencv2/core/hal/interface.h +191 -0
  574. package/third-party/include/opencv2/core/hal/intrin.hpp +1222 -0
  575. package/third-party/include/opencv2/core/hal/intrin_avx.hpp +3378 -0
  576. package/third-party/include/opencv2/core/hal/intrin_avx512.hpp +3688 -0
  577. package/third-party/include/opencv2/core/hal/intrin_cpp.hpp +3446 -0
  578. package/third-party/include/opencv2/core/hal/intrin_forward.hpp +195 -0
  579. package/third-party/include/opencv2/core/hal/intrin_lasx.hpp +3243 -0
  580. package/third-party/include/opencv2/core/hal/intrin_lsx.hpp +2671 -0
  581. package/third-party/include/opencv2/core/hal/intrin_math.hpp +772 -0
  582. package/third-party/include/opencv2/core/hal/intrin_msa.hpp +1973 -0
  583. package/third-party/include/opencv2/core/hal/intrin_neon.hpp +2710 -0
  584. package/third-party/include/opencv2/core/hal/intrin_rvv071.hpp +3452 -0
  585. package/third-party/include/opencv2/core/hal/intrin_rvv_scalable.hpp +2559 -0
  586. package/third-party/include/opencv2/core/hal/intrin_sse.hpp +3528 -0
  587. package/third-party/include/opencv2/core/hal/intrin_sse_em.hpp +175 -0
  588. package/third-party/include/opencv2/core/hal/intrin_vsx.hpp +1756 -0
  589. package/third-party/include/opencv2/core/hal/intrin_wasm.hpp +2911 -0
  590. package/third-party/include/opencv2/core/hal/msa_macros.h +2079 -0
  591. package/third-party/include/opencv2/core/hal/simd_utils.impl.hpp +313 -0
  592. package/third-party/include/opencv2/core/mat.hpp +3842 -0
  593. package/third-party/include/opencv2/core/mat.inl.hpp +2753 -0
  594. package/third-party/include/opencv2/core/matx.hpp +603 -0
  595. package/third-party/include/opencv2/core/matx.inl.hpp +1132 -0
  596. package/third-party/include/opencv2/core/neon_utils.hpp +127 -0
  597. package/third-party/include/opencv2/core/operations.hpp +610 -0
  598. package/third-party/include/opencv2/core/optim.hpp +362 -0
  599. package/third-party/include/opencv2/core/parallel/backend/parallel_for.openmp.hpp +66 -0
  600. package/third-party/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp +148 -0
  601. package/third-party/include/opencv2/core/parallel/parallel_backend.hpp +108 -0
  602. package/third-party/include/opencv2/core/persistence.hpp +1321 -0
  603. package/third-party/include/opencv2/core/quaternion.hpp +1889 -0
  604. package/third-party/include/opencv2/core/quaternion.inl.hpp +907 -0
  605. package/third-party/include/opencv2/core/saturate.hpp +347 -0
  606. package/third-party/include/opencv2/core/simd_intrinsics.hpp +90 -0
  607. package/third-party/include/opencv2/core/softfloat.hpp +657 -0
  608. package/third-party/include/opencv2/core/sse_utils.hpp +861 -0
  609. package/third-party/include/opencv2/core/traits.hpp +417 -0
  610. package/third-party/include/opencv2/core/types.hpp +2368 -0
  611. package/third-party/include/opencv2/core/types_c.h +2064 -0
  612. package/third-party/include/opencv2/core/utility.hpp +1296 -0
  613. package/third-party/include/opencv2/core/utils/allocator_stats.hpp +31 -0
  614. package/third-party/include/opencv2/core/utils/allocator_stats.impl.hpp +111 -0
  615. package/third-party/include/opencv2/core/utils/filesystem.hpp +91 -0
  616. package/third-party/include/opencv2/core/utils/fp_control_utils.hpp +70 -0
  617. package/third-party/include/opencv2/core/utils/instrumentation.hpp +127 -0
  618. package/third-party/include/opencv2/core/utils/logger.defines.hpp +50 -0
  619. package/third-party/include/opencv2/core/utils/logger.hpp +258 -0
  620. package/third-party/include/opencv2/core/utils/logtag.hpp +27 -0
  621. package/third-party/include/opencv2/core/utils/tls.hpp +230 -0
  622. package/third-party/include/opencv2/core/utils/trace.hpp +281 -0
  623. package/third-party/include/opencv2/core/version.hpp +29 -0
  624. package/third-party/include/opencv2/core/vsx_utils.hpp +1115 -0
  625. package/third-party/include/opencv2/core.hpp +3699 -0
  626. package/third-party/include/opencv2/cvconfig.h +155 -0
  627. package/third-party/include/opencv2/dnn/dnn.hpp +51 -0
  628. package/third-party/include/opencv2/dnn.hpp +17 -0
  629. package/third-party/include/opencv2/features2d/features2d.hpp +55 -0
  630. package/third-party/include/opencv2/features2d/hal/interface.h +32 -0
  631. package/third-party/include/opencv2/features2d.hpp +1756 -0
  632. package/third-party/include/opencv2/highgui/highgui.hpp +113 -0
  633. package/third-party/include/opencv2/highgui.hpp +17 -0
  634. package/third-party/include/opencv2/imgproc/bindings.hpp +34 -0
  635. package/third-party/include/opencv2/imgproc/detail/gcgraph.hpp +355 -0
  636. package/third-party/include/opencv2/imgproc/detail/legacy.hpp +35 -0
  637. package/third-party/include/opencv2/imgproc/hal/hal.hpp +246 -0
  638. package/third-party/include/opencv2/imgproc/hal/interface.h +52 -0
  639. package/third-party/include/opencv2/imgproc/imgproc.hpp +55 -0
  640. package/third-party/include/opencv2/imgproc/imgproc_c.h +1261 -0
  641. package/third-party/include/opencv2/imgproc/segmentation.hpp +168 -0
  642. package/third-party/include/opencv2/imgproc/types_c.h +632 -0
  643. package/third-party/include/opencv2/imgproc.hpp +5956 -0
  644. package/third-party/include/opencv2/opencv.hpp +102 -0
  645. package/third-party/include/opencv2/opencv_modules.hpp +19 -0
  646. package/third-party/include/opencv2/photo/legacy/constants_c.h +10 -0
  647. package/third-party/include/opencv2/photo/photo.hpp +55 -0
  648. package/third-party/include/opencv2/photo.hpp +975 -0
  649. package/third-party/include/opencv2/video/background_segm.hpp +341 -0
  650. package/third-party/include/opencv2/video/detail/tracking.detail.hpp +435 -0
  651. package/third-party/include/opencv2/video/legacy/constants_c.h +15 -0
  652. package/third-party/include/opencv2/video/tracking.hpp +1014 -0
  653. package/third-party/include/opencv2/video/video.hpp +55 -0
  654. package/third-party/include/opencv2/video.hpp +65 -0
  655. package/third-party/include/pthreadpool/pthreadpool.h +2236 -0
  656. package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
  657. package/third-party/include/tokenizers-cpp/tokenizers_cpp.h +118 -0
  658. package/third-party/include/torch/headeronly/macros/Export.h +154 -0
  659. package/third-party/include/torch/headeronly/macros/Macros.h +553 -0
  660. package/third-party/include/torch/headeronly/util/BFloat16.h +477 -0
  661. package/third-party/include/torch/headeronly/util/Half.h +781 -0
  662. package/third-party/include/torch/headeronly/util/TypeSafeSignMath.h +141 -0
  663. package/third-party/include/torch/headeronly/util/bit_cast.h +49 -0
  664. package/third-party/include/torch/headeronly/util/complex.h +593 -0
  665. package/third-party/include/torch/headeronly/util/floating_point_utils.h +38 -0
  666. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  667. package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  668. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  669. package/{ios → third-party/ios}/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  670. package/third-party/ios/libs/cpuinfo/libcpuinfo.a +0 -0
  671. package/third-party/ios/libs/pthreadpool/physical-arm64-release/libpthreadpool.a +0 -0
  672. package/third-party/ios/libs/pthreadpool/simulator-arm64-debug/libpthreadpool.a +0 -0
  673. package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libsentencepiece.a +0 -0
  674. package/{ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib → third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_c.a} +0 -0
  675. package/third-party/ios/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_cpp.a +0 -0
  676. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libsentencepiece.a +0 -0
  677. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_c.a +0 -0
  678. package/third-party/ios/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_cpp.a +0 -0
  679. package/LICENSE +0 -79
  680. package/android/src/main/java/com/swmansion/rnexecutorch/Classification.kt +0 -64
  681. package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +0 -90
  682. package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +0 -58
  683. package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +0 -63
  684. package/android/src/main/java/com/swmansion/rnexecutorch/OCR.kt +0 -90
  685. package/android/src/main/java/com/swmansion/rnexecutorch/ObjectDetection.kt +0 -64
  686. package/android/src/main/java/com/swmansion/rnexecutorch/SpeechToText.kt +0 -91
  687. package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +0 -54
  688. package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +0 -51
  689. package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +0 -86
  690. package/android/src/main/java/com/swmansion/rnexecutorch/VerticalOCR.kt +0 -179
  691. package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +0 -54
  692. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +0 -48
  693. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +0 -37
  694. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +0 -46
  695. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/Constants.kt +0 -1005
  696. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +0 -26
  697. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +0 -142
  698. package/android/src/main/java/com/swmansion/rnexecutorch/models/objectDetection/SSDLiteLargeModel.kt +0 -74
  699. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Detector.kt +0 -82
  700. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/RecognitionHandler.kt +0 -117
  701. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/Recognizer.kt +0 -51
  702. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/VerticalDetector.kt +0 -89
  703. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/CTCLabelConverter.kt +0 -58
  704. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/Constants.kt +0 -31
  705. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/DetectorUtils.kt +0 -608
  706. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +0 -430
  707. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TDecoder.kt +0 -39
  708. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/BaseS2TModule.kt +0 -43
  709. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Moonshine.kt +0 -16
  710. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineDecoder.kt +0 -23
  711. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/MoonshineEncoder.kt +0 -20
  712. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/Whisper.kt +0 -16
  713. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperDecoder.kt +0 -22
  714. package/android/src/main/java/com/swmansion/rnexecutorch/models/speechToText/WhisperEncoder.kt +0 -29
  715. package/android/src/main/java/com/swmansion/rnexecutorch/models/styleTransfer/StyleTransferModel.kt +0 -43
  716. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -87
  717. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ETError.kt +0 -34
  718. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ImageProcessor.kt +0 -237
  719. package/android/src/main/java/com/swmansion/rnexecutorch/utils/Numerical.kt +0 -8
  720. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ObjectDetectionUtils.kt +0 -201
  721. package/android/src/main/java/com/swmansion/rnexecutorch/utils/STFT.kt +0 -50
  722. package/android/src/main/java/com/swmansion/rnexecutorch/utils/TensorUtils.kt +0 -103
  723. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/ETModel.h +0 -27
  724. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
  725. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
  726. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/ETModel.h +0 -27
  727. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +0 -14
  728. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/LLaMARunner.h +0 -32
  729. package/ios/RnExecutorch/Classification.h +0 -5
  730. package/ios/RnExecutorch/Classification.mm +0 -54
  731. package/ios/RnExecutorch/ETModule.h +0 -5
  732. package/ios/RnExecutorch/ETModule.mm +0 -75
  733. package/ios/RnExecutorch/ImageSegmentation.h +0 -5
  734. package/ios/RnExecutorch/ImageSegmentation.mm +0 -60
  735. package/ios/RnExecutorch/LLM.h +0 -5
  736. package/ios/RnExecutorch/LLM.mm +0 -78
  737. package/ios/RnExecutorch/OCR.h +0 -5
  738. package/ios/RnExecutorch/OCR.mm +0 -96
  739. package/ios/RnExecutorch/ObjectDetection.h +0 -5
  740. package/ios/RnExecutorch/ObjectDetection.mm +0 -56
  741. package/ios/RnExecutorch/SpeechToText.h +0 -5
  742. package/ios/RnExecutorch/SpeechToText.mm +0 -125
  743. package/ios/RnExecutorch/StyleTransfer.h +0 -5
  744. package/ios/RnExecutorch/StyleTransfer.mm +0 -55
  745. package/ios/RnExecutorch/TextEmbeddings.h +0 -5
  746. package/ios/RnExecutorch/TextEmbeddings.mm +0 -62
  747. package/ios/RnExecutorch/Tokenizer.h +0 -5
  748. package/ios/RnExecutorch/Tokenizer.mm +0 -83
  749. package/ios/RnExecutorch/VerticalOCR.h +0 -5
  750. package/ios/RnExecutorch/VerticalOCR.mm +0 -183
  751. package/ios/RnExecutorch/models/BaseModel.h +0 -21
  752. package/ios/RnExecutorch/models/BaseModel.mm +0 -43
  753. package/ios/RnExecutorch/models/classification/ClassificationModel.h +0 -10
  754. package/ios/RnExecutorch/models/classification/ClassificationModel.mm +0 -53
  755. package/ios/RnExecutorch/models/classification/Constants.h +0 -3
  756. package/ios/RnExecutorch/models/image_segmentation/Constants.h +0 -4
  757. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +0 -10
  758. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +0 -146
  759. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.hpp +0 -11
  760. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +0 -64
  761. package/ios/RnExecutorch/models/ocr/Detector.h +0 -9
  762. package/ios/RnExecutorch/models/ocr/Detector.mm +0 -101
  763. package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +0 -16
  764. package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +0 -135
  765. package/ios/RnExecutorch/models/ocr/Recognizer.h +0 -8
  766. package/ios/RnExecutorch/models/ocr/Recognizer.mm +0 -77
  767. package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -10
  768. package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +0 -118
  769. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.h +0 -16
  770. package/ios/RnExecutorch/models/ocr/utils/CTCLabelConverter.mm +0 -80
  771. package/ios/RnExecutorch/models/ocr/utils/Constants.h +0 -26
  772. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.h +0 -31
  773. package/ios/RnExecutorch/models/ocr/utils/DetectorUtils.mm +0 -754
  774. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.h +0 -10
  775. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -67
  776. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.h +0 -35
  777. package/ios/RnExecutorch/models/ocr/utils/RecognizerUtils.mm +0 -331
  778. package/ios/RnExecutorch/models/stt/Moonshine.hpp +0 -13
  779. package/ios/RnExecutorch/models/stt/Moonshine.mm +0 -64
  780. package/ios/RnExecutorch/models/stt/MoonshineDecoder.hpp +0 -16
  781. package/ios/RnExecutorch/models/stt/MoonshineDecoder.mm +0 -24
  782. package/ios/RnExecutorch/models/stt/MoonshineEncoder.hpp +0 -15
  783. package/ios/RnExecutorch/models/stt/MoonshineEncoder.mm +0 -18
  784. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.hpp +0 -26
  785. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +0 -19
  786. package/ios/RnExecutorch/models/stt/Whisper.hpp +0 -12
  787. package/ios/RnExecutorch/models/stt/Whisper.mm +0 -68
  788. package/ios/RnExecutorch/models/stt/WhisperDecoder.hpp +0 -16
  789. package/ios/RnExecutorch/models/stt/WhisperDecoder.mm +0 -22
  790. package/ios/RnExecutorch/models/stt/WhisperEncoder.hpp +0 -15
  791. package/ios/RnExecutorch/models/stt/WhisperEncoder.mm +0 -21
  792. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.h +0 -11
  793. package/ios/RnExecutorch/models/style_transfer/StyleTransferModel.mm +0 -50
  794. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +0 -15
  795. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +0 -45
  796. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +0 -8
  797. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +0 -49
  798. package/ios/RnExecutorch/utils/Constants.h +0 -8
  799. package/ios/RnExecutorch/utils/Conversions.h +0 -15
  800. package/ios/RnExecutorch/utils/ETError.h +0 -26
  801. package/ios/RnExecutorch/utils/ImageProcessor.h +0 -15
  802. package/ios/RnExecutorch/utils/ImageProcessor.mm +0 -147
  803. package/ios/RnExecutorch/utils/Numerical.h +0 -1
  804. package/ios/RnExecutorch/utils/Numerical.mm +0 -18
  805. package/ios/RnExecutorch/utils/ObjectDetectionUtils.hpp +0 -23
  806. package/ios/RnExecutorch/utils/SFFT.hpp +0 -13
  807. package/ios/RnExecutorch/utils/SFFT.mm +0 -71
  808. package/ios/RnExecutorch/utils/ScalarType.h +0 -14
  809. package/ios/RnExecutorch/utils/ScalarType.mm +0 -21
  810. package/lib/module/constants/sttDefaults.js +0 -72
  811. package/lib/module/constants/sttDefaults.js.map +0 -1
  812. package/lib/module/controllers/SpeechToTextController.js +0 -307
  813. package/lib/module/controllers/SpeechToTextController.js.map +0 -1
  814. package/lib/module/native/NativeClassification.js +0 -5
  815. package/lib/module/native/NativeClassification.js.map +0 -1
  816. package/lib/module/native/NativeETModule.js +0 -5
  817. package/lib/module/native/NativeETModule.js.map +0 -1
  818. package/lib/module/native/NativeImageSegmentation.js +0 -5
  819. package/lib/module/native/NativeImageSegmentation.js.map +0 -1
  820. package/lib/module/native/NativeLLM.js +0 -5
  821. package/lib/module/native/NativeLLM.js.map +0 -1
  822. package/lib/module/native/NativeOCR.js +0 -5
  823. package/lib/module/native/NativeOCR.js.map +0 -1
  824. package/lib/module/native/NativeObjectDetection.js +0 -5
  825. package/lib/module/native/NativeObjectDetection.js.map +0 -1
  826. package/lib/module/native/NativeSpeechToText.js +0 -5
  827. package/lib/module/native/NativeSpeechToText.js.map +0 -1
  828. package/lib/module/native/NativeStyleTransfer.js +0 -5
  829. package/lib/module/native/NativeStyleTransfer.js.map +0 -1
  830. package/lib/module/native/NativeTextEmbeddings.js +0 -5
  831. package/lib/module/native/NativeTextEmbeddings.js.map +0 -1
  832. package/lib/module/native/NativeTokenizer.js +0 -5
  833. package/lib/module/native/NativeTokenizer.js.map +0 -1
  834. package/lib/module/native/NativeVerticalOCR.js +0 -5
  835. package/lib/module/native/NativeVerticalOCR.js.map +0 -1
  836. package/lib/module/package.json +0 -1
  837. package/lib/module/utils/stt.js +0 -22
  838. package/lib/module/utils/stt.js.map +0 -1
  839. package/lib/typescript/constants/sttDefaults.d.ts +0 -28
  840. package/lib/typescript/constants/sttDefaults.d.ts.map +0 -1
  841. package/lib/typescript/controllers/SpeechToTextController.d.ts +0 -52
  842. package/lib/typescript/controllers/SpeechToTextController.d.ts.map +0 -1
  843. package/lib/typescript/native/NativeClassification.d.ts +0 -10
  844. package/lib/typescript/native/NativeClassification.d.ts.map +0 -1
  845. package/lib/typescript/native/NativeETModule.d.ts +0 -9
  846. package/lib/typescript/native/NativeETModule.d.ts.map +0 -1
  847. package/lib/typescript/native/NativeImageSegmentation.d.ts +0 -10
  848. package/lib/typescript/native/NativeImageSegmentation.d.ts.map +0 -1
  849. package/lib/typescript/native/NativeLLM.d.ts +0 -12
  850. package/lib/typescript/native/NativeLLM.d.ts.map +0 -1
  851. package/lib/typescript/native/NativeOCR.d.ts +0 -9
  852. package/lib/typescript/native/NativeOCR.d.ts.map +0 -1
  853. package/lib/typescript/native/NativeObjectDetection.d.ts +0 -9
  854. package/lib/typescript/native/NativeObjectDetection.d.ts.map +0 -1
  855. package/lib/typescript/native/NativeSpeechToText.d.ts +0 -12
  856. package/lib/typescript/native/NativeSpeechToText.d.ts.map +0 -1
  857. package/lib/typescript/native/NativeStyleTransfer.d.ts.map +0 -1
  858. package/lib/typescript/native/NativeTextEmbeddings.d.ts +0 -8
  859. package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +0 -1
  860. package/lib/typescript/native/NativeTokenizer.d.ts +0 -12
  861. package/lib/typescript/native/NativeTokenizer.d.ts.map +0 -1
  862. package/lib/typescript/native/NativeVerticalOCR.d.ts +0 -9
  863. package/lib/typescript/native/NativeVerticalOCR.d.ts.map +0 -1
  864. package/lib/typescript/utils/stt.d.ts +0 -2
  865. package/lib/typescript/utils/stt.d.ts.map +0 -1
  866. package/src/constants/sttDefaults.ts +0 -86
  867. package/src/controllers/SpeechToTextController.ts +0 -458
  868. package/src/index.tsx +0 -47
  869. package/src/native/NativeClassification.ts +0 -9
  870. package/src/native/NativeETModule.ts +0 -14
  871. package/src/native/NativeImageSegmentation.ts +0 -14
  872. package/src/native/NativeLLM.ts +0 -14
  873. package/src/native/NativeOCR.ts +0 -16
  874. package/src/native/NativeObjectDetection.ts +0 -10
  875. package/src/native/NativeSpeechToText.ts +0 -17
  876. package/src/native/NativeStyleTransfer.ts +0 -10
  877. package/src/native/NativeTextEmbeddings.ts +0 -9
  878. package/src/native/NativeTokenizer.ts +0 -13
  879. package/src/native/NativeVerticalOCR.ts +0 -16
  880. package/src/utils/stt.ts +0 -28
  881. package/{ios → third-party/ios}/ExecutorchLib.xcframework/Info.plist +4 -4
@@ -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