react-native-executorch 0.4.9 → 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 +54 -24
  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 +77 -37
  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,1313 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ /**
10
+ * @file
11
+ *
12
+ * Forked from
13
+ * https://github.com/pytorch/pytorch/blob/master/c10/core/ScalarType.h
14
+ *
15
+ * See file comment in ../ScalarType.h.
16
+ *
17
+ * This file contains all of the non-critical parts of the original ScalarType.h
18
+ * that are not required for the core ExecuTorch runtime, but may be helpful for
19
+ * code that uses ScalarType.
20
+ */
21
+
22
+ #pragma once
23
+
24
+ #include <array>
25
+ #include <cinttypes>
26
+ #include <cstdint>
27
+ #include <limits>
28
+ #include <type_traits>
29
+
30
+ #include <executorch/runtime/platform/assert.h>
31
+
32
+ #ifdef USE_ATEN_LIB
33
+ // Note that a lot of the macros/functions defined in this ScalarTypeUtil.h file
34
+ // are also defined in c10/core/ScalarType.h, which is included via
35
+ // kernel_types.h when building in ATen mode. They tend to use different names
36
+ // and a different namespace, but if there are conflicts they should be resolved
37
+ // here.
38
+ #define ET_FORALL_SCALAR_TYPES AT_FORALL_SCALAR_TYPES_WITH_COMPLEX_AND_QINTS
39
+ #include <c10/core/ScalarType.h>
40
+ namespace executorch {
41
+ namespace aten {
42
+ using ScalarType = at::ScalarType;
43
+ } // namespace aten
44
+ } // namespace executorch
45
+ #else // !USE_ATEN_LIB
46
+ #include <executorch/runtime/core/portable_type/scalar_type.h>
47
+ #include <executorch/runtime/core/portable_type/string_view.h>
48
+ namespace executorch {
49
+ namespace aten {
50
+ using ScalarType = torch::executor::ScalarType;
51
+ using string_view = torch::executor::string_view;
52
+ } // namespace aten
53
+ } // namespace executorch
54
+ #endif // USE_ATEN_LIB
55
+ // DEPRECATED: The executorch::aten:: namespace is deprecated. Use
56
+ // executorch::aten:: instead.
57
+ namespace exec_aten = ::executorch::aten;
58
+
59
+ namespace executorch {
60
+ namespace runtime {
61
+
62
+ #if !defined(USE_ATEN_LIB)
63
+ // Util to figure out if the scalar type if one of the
64
+ // supported floating point types.
65
+ // In aten mode, aten lib already has these utils as part of
66
+ // its vec_base.h
67
+ template <typename T>
68
+ struct is_floating_point
69
+ : std::integral_constant<bool,
70
+ std::is_floating_point<T>::value ||
71
+ std::is_same_v<T, torch::executor::Half> ||
72
+ std::is_same_v<T, torch::executor::BFloat16>> {
73
+ };
74
+
75
+ // Util to figure out if the scalar type is one of the
76
+ // reduced precision floating point types.
77
+ template <typename T>
78
+ struct is_reduced_floating_point
79
+ : std::integral_constant<bool,
80
+ std::is_same_v<T, torch::executor::Half> ||
81
+ std::is_same_v<T, torch::executor::BFloat16>> {
82
+ };
83
+
84
+ template <typename T>
85
+ constexpr bool is_reduced_floating_point_v =
86
+ is_reduced_floating_point<T>::value;
87
+ #endif
88
+
89
+ /// Maps ScalarTypes to C++ types.
90
+ template <::executorch::aten::ScalarType N> struct ScalarTypeToCppType;
91
+
92
+ #define SPECIALIZE_ScalarTypeToCppType(cpp_type, scalar_type) \
93
+ template <> \
94
+ struct ScalarTypeToCppType<::executorch::aten::ScalarType::scalar_type> { \
95
+ using type = cpp_type; \
96
+ };
97
+
98
+ ET_FORALL_SCALAR_TYPES(SPECIALIZE_ScalarTypeToCppType)
99
+
100
+ #undef SPECIALIZE_ScalarTypeToCppType
101
+
102
+ /// Maps C++ types to ScalarTypes.
103
+ template <typename T> struct CppTypeToScalarType;
104
+
105
+ #define SPECIALIZE_CppTypeToScalarType(cpp_type, scalar_type) \
106
+ template <> \
107
+ struct CppTypeToScalarType<cpp_type> \
108
+ : std::integral_constant<::executorch::aten::ScalarType, \
109
+ ::executorch::aten::ScalarType::scalar_type> { \
110
+ };
111
+
112
+ ET_FORALL_SCALAR_TYPES(SPECIALIZE_CppTypeToScalarType)
113
+
114
+ #undef SPECIALIZE_CppTypeToScalarType
115
+
116
+ //
117
+ // Macros that iterate across different subsets of ScalarTypes.
118
+ //
119
+ // See ET_FORALL_SCALAR_TYPES in ScalarType.h to iterate across all ScalarType
120
+ // names and types.
121
+ //
122
+ // For all of these macros, the final `_` parameter is the name of another macro
123
+ // that takes two parameters: the name of a C type, and the name of the
124
+ // corresponding ScalarType enumerator.
125
+ //
126
+ // Note that these macros should use fully-qualified namespaces (starting with
127
+ // `::`) to ensure that they can be called safely in any arbitrary namespace.
128
+ //
129
+
130
+ // In this context, "INT" means integer C types, which is why the quantized
131
+ // integer types are not included.
132
+ #define ET_FORALL_INT_TYPES(_) \
133
+ _(uint8_t, Byte) \
134
+ _(int8_t, Char) \
135
+ _(int16_t, Short) \
136
+ _(int32_t, Int) \
137
+ _(int64_t, Long)
138
+
139
+ // Here `ANOTHER_INPUT` should be another variable to be forwarded to a given
140
+ // function.
141
+ #define ET_FORALL_INT_TYPES_WITH(ANOTHER_INPUT, _) \
142
+ _(ANOTHER_INPUT, uint8_t, Byte) \
143
+ _(ANOTHER_INPUT, int8_t, Char) \
144
+ _(ANOTHER_INPUT, int16_t, Short) \
145
+ _(ANOTHER_INPUT, int32_t, Int) \
146
+ _(ANOTHER_INPUT, int64_t, Long)
147
+
148
+ #define ET_FORALL_INT_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
149
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, uint8_t, Byte) \
150
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int8_t, Char) \
151
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int16_t, Short) \
152
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int32_t, Int) \
153
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int64_t, Long)
154
+
155
+ #define ET_FORALL_INT_TYPES_AND(SCALARTYPE, _) \
156
+ _(uint8_t, Byte) \
157
+ _(int8_t, Char) \
158
+ _(int16_t, Short) \
159
+ _(int32_t, Int) \
160
+ _(int64_t, Long) \
161
+ _(::executorch::runtime::ScalarTypeToCppType< \
162
+ ::executorch::aten::ScalarType::SCALARTYPE>::type, \
163
+ SCALARTYPE)
164
+
165
+ // In this context, "FLOAT" means float C types, which is why BFloat16 is not
166
+ // included.
167
+ #define ET_FORALL_FLOAT_TYPES(_) \
168
+ _(float, Float) \
169
+ _(double, Double)
170
+
171
+ #define ET_FORALL_FLOAT_TYPES_AND(SCALARTYPE, _) \
172
+ _(float, Float) \
173
+ _(double, Double) \
174
+ _(::executorch::runtime::ScalarTypeToCppType< \
175
+ ::executorch::aten::ScalarType::SCALARTYPE>::type, \
176
+ SCALARTYPE)
177
+
178
+ #define ET_FORALL_FLOAT_TYPES_AND2(SCALARTYPE1, SCALARTYPE2, _) \
179
+ _(float, Float) \
180
+ _(double, Double) \
181
+ _(::executorch::runtime::ScalarTypeToCppType< \
182
+ ::executorch::aten::ScalarType::SCALARTYPE1>::type, \
183
+ SCALARTYPE1) \
184
+ _(::executorch::runtime::ScalarTypeToCppType< \
185
+ ::executorch::aten::ScalarType::SCALARTYPE2>::type, \
186
+ SCALARTYPE2)
187
+
188
+ #define ET_FORALL_FLOATH_TYPES(_) ET_FORALL_FLOAT_TYPES_AND(Half, _)
189
+
190
+ #define ET_FORALL_FLOATHBF16_TYPES(_) \
191
+ ET_FORALL_FLOAT_TYPES_AND2(Half, BFloat16, _)
192
+
193
+ // Here `ANOTHER_INPUT` should be another variable to be forwarded to a given
194
+ // function. Not to be confused with another scalar type as in
195
+ // `ET_FORALL_FLOAT_TYPES_AND`.
196
+ #define ET_FORALL_FLOAT_TYPES_WITH(ANOTHER_INPUT, _) \
197
+ _(ANOTHER_INPUT, float, Float) \
198
+ _(ANOTHER_INPUT, double, Double)
199
+
200
+ #define ET_FORALL_FLOATH_TYPES_WITH(ANOTHER_INPUT, _) \
201
+ _(ANOTHER_INPUT, float, Float) \
202
+ _(ANOTHER_INPUT, double, Double) \
203
+ _(ANOTHER_INPUT, ::executorch::aten::Half, Half)
204
+
205
+ #define ET_FORALL_FLOAT_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
206
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, float, Float) \
207
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, double, Double)
208
+
209
+ #define ET_FORALL_FLOATHBF16_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
210
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, float, Float) \
211
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, double, Double) \
212
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, ::executorch::aten::Half, Half) \
213
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, ::executorch::aten::BFloat16, BFloat16)
214
+
215
+ // In this context, "REAL" means integer/float C types, which is why BFloat16
216
+ // and Half are not included.
217
+ #define ET_FORALL_REAL_TYPES(_) \
218
+ _(uint8_t, Byte) \
219
+ _(int8_t, Char) \
220
+ _(int16_t, Short) \
221
+ _(int32_t, Int) \
222
+ _(int64_t, Long) \
223
+ _(float, Float) \
224
+ _(double, Double)
225
+
226
+ // Here `ANOTHER_INPUT` should be another variable to be forwarded to a given
227
+ // function. Not to be confused with another scalar type as in
228
+ // `ET_FORALL_REAL_TYPES_AND`.
229
+ #define ET_FORALL_REAL_TYPES_WITH(ANOTHER_INPUT, _) \
230
+ _(ANOTHER_INPUT, uint8_t, Byte) \
231
+ _(ANOTHER_INPUT, int8_t, Char) \
232
+ _(ANOTHER_INPUT, int16_t, Short) \
233
+ _(ANOTHER_INPUT, int32_t, Int) \
234
+ _(ANOTHER_INPUT, int64_t, Long) \
235
+ _(ANOTHER_INPUT, float, Float) \
236
+ _(ANOTHER_INPUT, double, Double)
237
+
238
+ #define ET_FORALL_REAL_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
239
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, uint8_t, Byte) \
240
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int8_t, Char) \
241
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int16_t, Short) \
242
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int32_t, Int) \
243
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int64_t, Long) \
244
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, float, Float) \
245
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, double, Double)
246
+
247
+ #define ET_FORALL_REALHBF16_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
248
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, uint8_t, Byte) \
249
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int8_t, Char) \
250
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int16_t, Short) \
251
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int32_t, Int) \
252
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, int64_t, Long) \
253
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, float, Float) \
254
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, double, Double) \
255
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, ::executorch::aten::Half, Half) \
256
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, ::executorch::aten::BFloat16, BFloat16)
257
+
258
+ #define ET_FORALL_REALHBBF16_TYPES_WITH2(ANOTHER_INPUT1, ANOTHER_INPUT2, _) \
259
+ ET_FORALL_REALHBF16_TYPES_WITH2(ANOTHER_INPUT2, ANOTHER_INPUT2, _) \
260
+ _(ANOTHER_INPUT1, ANOTHER_INPUT2, bool, Bool)
261
+
262
+ // For macros that take `SCALARTYPEn` parameters, those parameters should be
263
+ // an unquoted/unqualified enumerator name like `Int` or `Float`.
264
+ #define ET_FORALL_REAL_TYPES_AND(SCALARTYPE, _) \
265
+ _(uint8_t, Byte) \
266
+ _(int8_t, Char) \
267
+ _(int16_t, Short) \
268
+ _(int32_t, Int) \
269
+ _(int64_t, Long) \
270
+ _(float, Float) \
271
+ _(double, Double) \
272
+ _(::executorch::runtime::ScalarTypeToCppType< \
273
+ ::executorch::aten::ScalarType::SCALARTYPE>::type, \
274
+ SCALARTYPE)
275
+
276
+ #define ET_FORALL_REAL_TYPES_AND2(SCALARTYPE1, SCALARTYPE2, _) \
277
+ _(uint8_t, Byte) \
278
+ _(int8_t, Char) \
279
+ _(int16_t, Short) \
280
+ _(int32_t, Int) \
281
+ _(int64_t, Long) \
282
+ _(float, Float) \
283
+ _(double, Double) \
284
+ _(::executorch::runtime::ScalarTypeToCppType< \
285
+ ::executorch::aten::ScalarType::SCALARTYPE1>::type, \
286
+ SCALARTYPE1) \
287
+ _(::executorch::runtime::ScalarTypeToCppType< \
288
+ ::executorch::aten::ScalarType::SCALARTYPE2>::type, \
289
+ SCALARTYPE2)
290
+
291
+ #define ET_FORALL_REALH_TYPES(_) ET_FORALL_REAL_TYPES_AND(Half, _)
292
+
293
+ #define ET_FORALL_REALHBF16_TYPES(_) \
294
+ ET_FORALL_REAL_TYPES_AND2(Half, BFloat16, _)
295
+
296
+ #define ET_FORALL_REALHBBF16_TYPES(_) \
297
+ ET_FORALL_REAL_TYPES_AND3(Bool, Half, BFloat16, _)
298
+
299
+ #define ET_FORALL_REAL_TYPES_AND_WITH(SCALARTYPE, ANOTHER_INPUT, _) \
300
+ _(ANOTHER_INPUT, uint8_t, Byte) \
301
+ _(ANOTHER_INPUT, int8_t, Char) \
302
+ _(ANOTHER_INPUT, int16_t, Short) \
303
+ _(ANOTHER_INPUT, int32_t, Int) \
304
+ _(ANOTHER_INPUT, int64_t, Long) \
305
+ _(ANOTHER_INPUT, float, Float) \
306
+ _(ANOTHER_INPUT, double, Double) \
307
+ _(ANOTHER_INPUT, \
308
+ ::executorch::runtime::ScalarTypeToCppType< \
309
+ ::executorch::aten::ScalarType::SCALARTYPE>::type, \
310
+ SCALARTYPE)
311
+
312
+ #define ET_FORALL_REAL_TYPES_AND2(SCALARTYPE1, SCALARTYPE2, _) \
313
+ _(uint8_t, Byte) \
314
+ _(int8_t, Char) \
315
+ _(int16_t, Short) \
316
+ _(int32_t, Int) \
317
+ _(int64_t, Long) \
318
+ _(float, Float) \
319
+ _(double, Double) \
320
+ _(::executorch::runtime::ScalarTypeToCppType< \
321
+ ::executorch::aten::ScalarType::SCALARTYPE1>::type, \
322
+ SCALARTYPE1) \
323
+ _(::executorch::runtime::ScalarTypeToCppType< \
324
+ ::executorch::aten::ScalarType::SCALARTYPE2>::type, \
325
+ SCALARTYPE2)
326
+
327
+ #define ET_FORALL_REAL_TYPES_AND3(SCALARTYPE1, SCALARTYPE2, SCALARTYPE3, _) \
328
+ _(uint8_t, Byte) \
329
+ _(int8_t, Char) \
330
+ _(int16_t, Short) \
331
+ _(int32_t, Int) \
332
+ _(int64_t, Long) \
333
+ _(float, Float) \
334
+ _(double, Double) \
335
+ _(::executorch::runtime::ScalarTypeToCppType< \
336
+ ::executorch::aten::ScalarType::SCALARTYPE1>::type, \
337
+ SCALARTYPE1) \
338
+ _(::executorch::runtime::ScalarTypeToCppType< \
339
+ ::executorch::aten::ScalarType::SCALARTYPE2>::type, \
340
+ SCALARTYPE2) \
341
+ _(::executorch::runtime::ScalarTypeToCppType< \
342
+ ::executorch::aten::ScalarType::SCALARTYPE3>::type, \
343
+ SCALARTYPE3)
344
+
345
+ #define ET_FORALL_QINT_TYPES(_) \
346
+ _(::torch::executor::qint8, QInt8) \
347
+ _(::torch::executor::quint8, QUInt8) \
348
+ _(::torch::executor::qint32, QInt32) \
349
+ _(::torch::executor::quint4x2, QUInt4x2) \
350
+ _(::torch::executor::quint2x4, QUInt2x4)
351
+
352
+ // In this context, "COMPLEX" means complex types based on primitive C types,
353
+ // which is why ComplexHalf is not included.
354
+ #define ET_FORALL_COMPLEX_TYPES(_) \
355
+ _(::executorch::aten::complex<float>, ComplexFloat) \
356
+ _(::executorch::aten::complex<double>, ComplexDouble)
357
+
358
+ #define ET_FORALL_COMPLEXH_TYPES(_) \
359
+ _(::executorch::aten::complex<::executorch::aten::Half>, ComplexHalf) \
360
+ _(::executorch::aten::complex<float>, ComplexFloat) \
361
+ _(::executorch::aten::complex<double>, ComplexDouble)
362
+
363
+ //
364
+ // Utility functions to retrieve metadata for a given ScalarType
365
+ //
366
+
367
+ /**
368
+ * Returns true if the parameter is one of the values covered by
369
+ * ET_FORALL_SCALAR_TYPES.
370
+ */
371
+ inline bool isValid(::executorch::aten::ScalarType type) {
372
+ return static_cast<int8_t>(type) >= 0 &&
373
+ type < ::executorch::aten::ScalarType::NumOptions &&
374
+ type != ::executorch::aten::ScalarType::Undefined;
375
+ }
376
+
377
+ /**
378
+ * Returns the name of a ScalarType as a C string.
379
+ *
380
+ * @param[in] t The type to get the name of.
381
+ * @return The name of the type, or "UNKNOWN_SCALAR" if the type is not known.
382
+ */
383
+ inline const char *toString(::executorch::aten::ScalarType t) {
384
+ #define DEFINE_CASE(_, name) \
385
+ case ::executorch::aten::ScalarType::name: \
386
+ return #name;
387
+
388
+ switch (t) {
389
+ ET_FORALL_SCALAR_TYPES(DEFINE_CASE)
390
+ case ::executorch::aten::ScalarType::Undefined:
391
+ return "Undefined";
392
+ default:
393
+ return "UNKNOWN_SCALAR";
394
+ }
395
+ #undef DEFINE_CASE
396
+ }
397
+
398
+ /**
399
+ * Returns the size in bytes of the C type associated with the ScalarType.
400
+ *
401
+ * Calls ET_CHECK_MSG() if the type is unknown or is ScalarType::Undefined.
402
+ *
403
+ * @param[in] t The type to get the underlying C type size of.
404
+ * @return The size of the associated C type in bytes.
405
+ */
406
+ inline size_t elementSize(::executorch::aten::ScalarType t) {
407
+ #define CASE_ELEMENTSIZE_CASE(ctype, name) \
408
+ case ::executorch::aten::ScalarType::name: \
409
+ return sizeof(ctype);
410
+
411
+ switch (t) {
412
+ ET_FORALL_SCALAR_TYPES(CASE_ELEMENTSIZE_CASE)
413
+ default:
414
+ ET_CHECK_MSG(false, "Unknown ScalarType %" PRId8, static_cast<int8_t>(t));
415
+ }
416
+ #undef CASE_ELEMENTSIZE_CASE
417
+ }
418
+
419
+ inline constexpr bool isIntegralType(::executorch::aten::ScalarType t,
420
+ bool includeBool) {
421
+ return (includeBool && t == ::executorch::aten::ScalarType::Bool) ||
422
+ (t == ::executorch::aten::ScalarType::Byte ||
423
+ t == ::executorch::aten::ScalarType::Char ||
424
+ t == ::executorch::aten::ScalarType::Int ||
425
+ t == ::executorch::aten::ScalarType::Long ||
426
+ t == ::executorch::aten::ScalarType::Short);
427
+ }
428
+
429
+ template <typename T, bool includeBool>
430
+ struct is_integral_type
431
+ : public std::integral_constant<
432
+ bool, isIntegralType(CppTypeToScalarType<T>::value, includeBool)> {};
433
+
434
+ inline constexpr bool isFloatingType(::executorch::aten::ScalarType t) {
435
+ return (t == ::executorch::aten::ScalarType::Double ||
436
+ t == ::executorch::aten::ScalarType::Float ||
437
+ t == ::executorch::aten::ScalarType::Half ||
438
+ t == ::executorch::aten::ScalarType::BFloat16);
439
+ }
440
+
441
+ inline bool isRealType(::executorch::aten::ScalarType t) {
442
+ return (t == ::executorch::aten::ScalarType::Byte ||
443
+ t == ::executorch::aten::ScalarType::Char ||
444
+ t == ::executorch::aten::ScalarType::Short ||
445
+ t == ::executorch::aten::ScalarType::Int ||
446
+ t == ::executorch::aten::ScalarType::Long ||
447
+ t == ::executorch::aten::ScalarType::Float ||
448
+ t == ::executorch::aten::ScalarType::Double);
449
+ }
450
+
451
+ inline bool isRealHType(::executorch::aten::ScalarType t) {
452
+ return (t == ::executorch::aten::ScalarType::Byte ||
453
+ t == ::executorch::aten::ScalarType::Char ||
454
+ t == ::executorch::aten::ScalarType::Short ||
455
+ t == ::executorch::aten::ScalarType::Int ||
456
+ t == ::executorch::aten::ScalarType::Long ||
457
+ t == ::executorch::aten::ScalarType::Float ||
458
+ t == ::executorch::aten::ScalarType::Double ||
459
+ t == ::executorch::aten::ScalarType::Half);
460
+ }
461
+
462
+ inline bool isRealHBType(::executorch::aten::ScalarType t) {
463
+ return (isRealHType(t) || t == ::executorch::aten::ScalarType::Bool);
464
+ }
465
+
466
+ inline bool isRealHBF16Type(::executorch::aten::ScalarType t) {
467
+ return (isRealHType(t) || t == ::executorch::aten::ScalarType::BFloat16);
468
+ }
469
+
470
+ inline bool isRealHBBF16Type(::executorch::aten::ScalarType t) {
471
+ return (isRealHBType(t) || t == ::executorch::aten::ScalarType::BFloat16);
472
+ }
473
+
474
+ inline constexpr bool isComplexType(::executorch::aten::ScalarType t) {
475
+ return (t == ::executorch::aten::ScalarType::ComplexHalf ||
476
+ t == ::executorch::aten::ScalarType::ComplexFloat ||
477
+ t == ::executorch::aten::ScalarType::ComplexDouble);
478
+ }
479
+
480
+ template <typename T>
481
+ struct is_complex_type
482
+ : std::integral_constant<bool,
483
+ isComplexType(CppTypeToScalarType<T>::value)> {};
484
+
485
+ constexpr bool isBitsType(::executorch::aten::ScalarType t) {
486
+ return t == ::executorch::aten::ScalarType::Bits1x8 ||
487
+ t == ::executorch::aten::ScalarType::Bits2x4 ||
488
+ t == ::executorch::aten::ScalarType::Bits4x2 ||
489
+ t == ::executorch::aten::ScalarType::Bits8 ||
490
+ t == ::executorch::aten::ScalarType::Bits16;
491
+ }
492
+
493
+ template <typename T>
494
+ struct is_bits_type
495
+ : std::integral_constant<bool, isBitsType(CppTypeToScalarType<T>::value)> {
496
+ };
497
+
498
+ constexpr bool isQIntType(::executorch::aten::ScalarType t) {
499
+ // Don't forget to extend this when adding new QInt types
500
+ return t == ::executorch::aten::ScalarType::QInt8 ||
501
+ t == ::executorch::aten::ScalarType::QUInt8 ||
502
+ t == ::executorch::aten::ScalarType::QInt32 ||
503
+ t == ::executorch::aten::ScalarType::QUInt4x2 ||
504
+ t == ::executorch::aten::ScalarType::QUInt2x4;
505
+ }
506
+
507
+ template <typename T>
508
+ struct is_qint_type
509
+ : std::integral_constant<bool, isQIntType(CppTypeToScalarType<T>::value)> {
510
+ };
511
+
512
+ constexpr bool isFloat8Type(::executorch::aten::ScalarType t) {
513
+ // Don't forget to extend this when adding new QInt types
514
+ return t == ::executorch::aten::ScalarType::Float8_e5m2 ||
515
+ t == ::executorch::aten::ScalarType::Float8_e4m3fn ||
516
+ t == ::executorch::aten::ScalarType::Float8_e5m2fnuz ||
517
+ t == ::executorch::aten::ScalarType::Float8_e4m3fnuz;
518
+ }
519
+
520
+ template <typename T>
521
+ struct is_float8_type
522
+ : std::integral_constant<bool,
523
+ isFloat8Type(CppTypeToScalarType<T>::value)> {};
524
+
525
+ constexpr bool isBarebonesUnsignedType(::executorch::aten::ScalarType t) {
526
+ // Don't forget to extend this when adding new QInt types
527
+ return t == ::executorch::aten::ScalarType::UInt16 ||
528
+ t == ::executorch::aten::ScalarType::UInt32 ||
529
+ t == ::executorch::aten::ScalarType::UInt64;
530
+ }
531
+
532
+ template <typename T>
533
+ struct is_barebones_unsigned_type
534
+ : std::integral_constant<bool, isBarebonesUnsignedType(
535
+ CppTypeToScalarType<T>::value)> {};
536
+
537
+ inline ::executorch::aten::ScalarType
538
+ toQIntType(::executorch::aten::ScalarType t) {
539
+ switch (t) {
540
+ case ::executorch::aten::ScalarType::Byte:
541
+ return ::executorch::aten::ScalarType::QUInt8;
542
+ case ::executorch::aten::ScalarType::Char:
543
+ return ::executorch::aten::ScalarType::QInt8;
544
+ case ::executorch::aten::ScalarType::Int:
545
+ return ::executorch::aten::ScalarType::QInt32;
546
+ default:
547
+ return t;
548
+ }
549
+ }
550
+
551
+ inline ::executorch::aten::ScalarType
552
+ toUnderlying(::executorch::aten::ScalarType t) {
553
+ switch (t) {
554
+ case ::executorch::aten::ScalarType::QUInt8:
555
+ return ::executorch::aten::ScalarType::Byte;
556
+ case ::executorch::aten::ScalarType::QInt8:
557
+ return ::executorch::aten::ScalarType::Char;
558
+ case ::executorch::aten::ScalarType::QInt32:
559
+ return ::executorch::aten::ScalarType::Int;
560
+ case ::executorch::aten::ScalarType::QUInt4x2:
561
+ return ::executorch::aten::ScalarType::Byte;
562
+ case ::executorch::aten::ScalarType::QUInt2x4:
563
+ return ::executorch::aten::ScalarType::Byte;
564
+ default:
565
+ return t;
566
+ }
567
+ }
568
+
569
+ inline bool isSignedType(::executorch::aten::ScalarType t) {
570
+ ET_CHECK_MSG(!::executorch::runtime::isQIntType(t),
571
+ "isSignedType not supported for quantized types like %" PRId8,
572
+ static_cast<int8_t>(t));
573
+ #define CASE_SIGNED(ctype, name) \
574
+ case ::executorch::aten::ScalarType::name: \
575
+ return std::numeric_limits<ctype>::is_signed;
576
+
577
+ switch (t) {
578
+ case ::executorch::aten::ScalarType::ComplexHalf:
579
+ case ::executorch::aten::ScalarType::ComplexFloat:
580
+ case ::executorch::aten::ScalarType::ComplexDouble:
581
+ return true;
582
+ ET_FORALL_REAL_TYPES_AND3(Half, Bool, BFloat16, CASE_SIGNED)
583
+ default:
584
+ ET_CHECK_MSG(false, "Unknown ScalarType %" PRId8, static_cast<int8_t>(t));
585
+ }
586
+ #undef CASE_SIGNED
587
+ }
588
+
589
+ inline bool isUnderlying(::executorch::aten::ScalarType type,
590
+ ::executorch::aten::ScalarType qtype) {
591
+ return type == ::executorch::runtime::toUnderlying(qtype);
592
+ }
593
+
594
+ inline constexpr ::executorch::aten::ScalarType
595
+ toRealValueType(::executorch::aten::ScalarType t) {
596
+ switch (t) {
597
+ case ::executorch::aten::ScalarType::ComplexHalf:
598
+ return ::executorch::aten::ScalarType::Half;
599
+ case ::executorch::aten::ScalarType::ComplexFloat:
600
+ return ::executorch::aten::ScalarType::Float;
601
+ case ::executorch::aten::ScalarType::ComplexDouble:
602
+ return ::executorch::aten::ScalarType::Double;
603
+ default:
604
+ return t;
605
+ }
606
+ }
607
+
608
+ inline constexpr ::executorch::aten::ScalarType
609
+ toComplexType(::executorch::aten::ScalarType t) {
610
+ switch (t) {
611
+ case ::executorch::aten::ScalarType::BFloat16:
612
+ // BFloat16 has range equivalent to Float,
613
+ // so we map it to ComplexFloat.
614
+ return ::executorch::aten::ScalarType::ComplexFloat;
615
+ case ::executorch::aten::ScalarType::Half:
616
+ return ::executorch::aten::ScalarType::ComplexHalf;
617
+ case ::executorch::aten::ScalarType::Float:
618
+ return ::executorch::aten::ScalarType::ComplexFloat;
619
+ case ::executorch::aten::ScalarType::Double:
620
+ return ::executorch::aten::ScalarType::ComplexDouble;
621
+ case ::executorch::aten::ScalarType::ComplexHalf:
622
+ return ::executorch::aten::ScalarType::ComplexHalf;
623
+ case ::executorch::aten::ScalarType::ComplexFloat:
624
+ return ::executorch::aten::ScalarType::ComplexFloat;
625
+ case ::executorch::aten::ScalarType::ComplexDouble:
626
+ return ::executorch::aten::ScalarType::ComplexDouble;
627
+ default:
628
+ ET_CHECK_MSG(false, "Unknown Complex ScalarType for %" PRId8,
629
+ static_cast<int8_t>(t));
630
+ }
631
+ }
632
+
633
+ /**
634
+ * Encodes type casting rules that are consistent with ATen behaviour.
635
+ */
636
+ inline constexpr bool canCast(const ::executorch::aten::ScalarType from,
637
+ const ::executorch::aten::ScalarType to) {
638
+ // Disallow complex -> non-complex
639
+ return !(::executorch::runtime::isComplexType(from) &&
640
+ !::executorch::runtime::isComplexType(to)) &&
641
+ // Disallow float -> integral
642
+ !(::executorch::runtime::isFloatingType(from) &&
643
+ ::executorch::runtime::isIntegralType(to, /*includeBool=*/false)) &&
644
+ // Treat bool as a special category. Disallow non-bool -> bool
645
+ !(from != ::executorch::aten::ScalarType::Bool &&
646
+ to == ::executorch::aten::ScalarType::Bool);
647
+ }
648
+
649
+ template <typename T1, typename T2>
650
+ struct can_cast
651
+ : std::integral_constant<bool, canCast(CppTypeToScalarType<T1>::value,
652
+ CppTypeToScalarType<T2>::value)> {};
653
+
654
+ /**
655
+ * When casting from floating point to integral type, if the floating value is
656
+ * outside the integral type range, then an error is thrown if sanitization is
657
+ * enabled. To circumvent this, we cast the floating point to int64_t first.
658
+ */
659
+ template <typename To, typename From,
660
+ std::enable_if_t<(std::is_floating_point<From>::value &&
661
+ std::is_integral<To>::value),
662
+ int> = 0>
663
+ To convert(From val) {
664
+ return static_cast<To>(static_cast<int64_t>(val));
665
+ }
666
+
667
+ template <typename To, typename From,
668
+ std::enable_if_t<!(std::is_floating_point<From>::value &&
669
+ std::is_integral<To>::value),
670
+ int> = 0>
671
+ To convert(From val) {
672
+ return static_cast<To>(val);
673
+ }
674
+
675
+ namespace internal {
676
+ // This is generated according to NumPy's promote_types
677
+ inline constexpr auto u1 = ::executorch::aten::ScalarType::Byte;
678
+ inline constexpr auto i1 = ::executorch::aten::ScalarType::Char;
679
+ inline constexpr auto i2 = ::executorch::aten::ScalarType::Short;
680
+ inline constexpr auto i4 = ::executorch::aten::ScalarType::Int;
681
+ inline constexpr auto i8 = ::executorch::aten::ScalarType::Long;
682
+ inline constexpr auto f2 = ::executorch::aten::ScalarType::Half;
683
+ inline constexpr auto f4 = ::executorch::aten::ScalarType::Float;
684
+ inline constexpr auto f8 = ::executorch::aten::ScalarType::Double;
685
+ inline constexpr auto c2 = ::executorch::aten::ScalarType::ComplexHalf;
686
+ inline constexpr auto c4 = ::executorch::aten::ScalarType::ComplexFloat;
687
+ inline constexpr auto c8 = ::executorch::aten::ScalarType::ComplexDouble;
688
+ inline constexpr auto b1 = ::executorch::aten::ScalarType::Bool;
689
+ inline constexpr auto bf = ::executorch::aten::ScalarType::BFloat16;
690
+
691
+ using U1 =
692
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Byte>::type;
693
+ using I1 =
694
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Char>::type;
695
+ using I2 =
696
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Short>::type;
697
+ using I4 =
698
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Int>::type;
699
+ using I8 =
700
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Long>::type;
701
+ using F2 =
702
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Half>::type;
703
+ using F4 =
704
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Float>::type;
705
+ using F8 =
706
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Double>::type;
707
+ using C2 = typename ScalarTypeToCppType<
708
+ ::executorch::aten::ScalarType::ComplexHalf>::type;
709
+ using C4 = typename ScalarTypeToCppType<
710
+ ::executorch::aten::ScalarType::ComplexFloat>::type;
711
+ using C8 = typename ScalarTypeToCppType<
712
+ ::executorch::aten::ScalarType::ComplexDouble>::type;
713
+ using B1 =
714
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Bool>::type;
715
+ using BF = typename ScalarTypeToCppType<
716
+ ::executorch::aten::ScalarType::BFloat16>::type;
717
+
718
+ inline constexpr std::array<::executorch::aten::ScalarType, 13> index2dtype = {
719
+ {u1, i1, i2, i4, i8, f2, f4, f8, c2, c4, c8, b1, bf}};
720
+
721
+ constexpr std::array<
722
+ int64_t, static_cast<size_t>(::executorch::aten::ScalarType::NumOptions)>
723
+ calculate_dtype2index() {
724
+ std::array<int64_t,
725
+ static_cast<size_t>(::executorch::aten::ScalarType::NumOptions)>
726
+ inverse = {};
727
+ for (int64_t i = 0;
728
+ i < static_cast<int64_t>(::executorch::aten::ScalarType::NumOptions);
729
+ i++) {
730
+ inverse[i] = -1;
731
+ }
732
+ for (int64_t i = 0; i < static_cast<int64_t>(index2dtype.size()); i++) {
733
+ inverse[static_cast<int64_t>(index2dtype[i])] = i;
734
+ }
735
+ return inverse;
736
+ }
737
+
738
+ inline constexpr auto dtype2index = calculate_dtype2index();
739
+ inline constexpr int NUM_PROMOTE_TYPES = 13;
740
+ // Should match _promoteTypesLookup in c10/core/ScalarType.cpp so that
741
+ // we match PyTorch core type promotion semantics.
742
+ inline constexpr ::executorch::aten::ScalarType
743
+ promoteTypesLookup[NUM_PROMOTE_TYPES][NUM_PROMOTE_TYPES] = {
744
+ /* u1 i1 i2 i4 i8 f2 f4 f8 c2 c4 c8 b1 bf*/
745
+ /* u1 */ {u1, i2, i2, i4, i8, f2, f4, f8, c2, c4, c8, u1, bf},
746
+ /* i1 */ {i2, i1, i2, i4, i8, f2, f4, f8, c2, c4, c8, i1, bf},
747
+ /* i2 */ {i2, i2, i2, i4, i8, f2, f4, f8, c2, c4, c8, i2, bf},
748
+ /* i4 */ {i4, i4, i4, i4, i8, f2, f4, f8, c2, c4, c8, i4, bf},
749
+ /* i8 */ {i8, i8, i8, i8, i8, f2, f4, f8, c2, c4, c8, i8, bf},
750
+ /* f2 */ {f2, f2, f2, f2, f2, f2, f4, f8, c2, c4, c8, f2, f4},
751
+ /* f4 */ {f4, f4, f4, f4, f4, f4, f4, f8, c4, c4, c8, f4, f4},
752
+ /* f8 */ {f8, f8, f8, f8, f8, f8, f8, f8, c8, c8, c8, f8, f8},
753
+ /* c2 */ {c2, c2, c2, c2, c2, c2, c4, c8, c2, c4, c8, c2, c4},
754
+ /* c4 */ {c4, c4, c4, c4, c4, c4, c4, c8, c4, c4, c8, c4, c4},
755
+ /* c8 */ {c8, c8, c8, c8, c8, c8, c8, c8, c8, c8, c8, c8, c8},
756
+ /* b1 */ {u1, i1, i2, i4, i8, f2, f4, f8, c2, c4, c8, b1, bf},
757
+ /* bf */ {bf, bf, bf, bf, bf, f4, f4, f8, c4, c4, c8, bf, bf},
758
+ };
759
+
760
+ } // namespace internal
761
+
762
+ /**
763
+ * Implements type promotion rules that are consistent with ATen behaviour,
764
+ * which in turn is consistent with NumPy's promote_types.
765
+ * If half_to_float is set to true, then half and bfloat16 will be promoted to
766
+ * float instead
767
+ */
768
+ inline constexpr ::executorch::aten::ScalarType
769
+ promoteTypes(::executorch::aten::ScalarType a, ::executorch::aten::ScalarType b,
770
+ bool half_to_float = false) {
771
+ // For QInt types, only allow exact match
772
+ if (::executorch::runtime::isQIntType(a) && a == b) {
773
+ return a;
774
+ }
775
+ if (::executorch::runtime::isQIntType(a) ||
776
+ ::executorch::runtime::isQIntType(b)) {
777
+ ET_CHECK_MSG(false, "promoteTypes not valid for quantized dtypes");
778
+ }
779
+
780
+ // For Bits types, only allow exact match
781
+ if (::executorch::runtime::isBitsType(a) && a == b) {
782
+ return a;
783
+ }
784
+ if (::executorch::runtime::isBitsType(a) ||
785
+ ::executorch::runtime::isBitsType(b)) {
786
+ ET_CHECK_MSG(false, "promoteTypes not valid for bits dtypes");
787
+ }
788
+
789
+ // For Float8 types, only allow exact match
790
+ if (::executorch::runtime::isFloat8Type(a) && a == b) {
791
+ return a;
792
+ }
793
+ if (::executorch::runtime::isFloat8Type(a) ||
794
+ ::executorch::runtime::isFloat8Type(b)) {
795
+ ET_CHECK_MSG(false, "promoteTypes not valid for float8 dtypes");
796
+ }
797
+
798
+ // For barebones uint types, only allow exact match
799
+ if (::executorch::runtime::isBarebonesUnsignedType(a) && a == b) {
800
+ return a;
801
+ }
802
+ if (::executorch::runtime::isBarebonesUnsignedType(a) ||
803
+ ::executorch::runtime::isBarebonesUnsignedType(b)) {
804
+ ET_CHECK_MSG(false, "promoteTypes not valid for barebone unsigned dtypes");
805
+ }
806
+
807
+ auto ix_a = ::executorch::runtime::internal::dtype2index[(int)a];
808
+ ET_CHECK(ix_a != -1);
809
+ auto ix_b = ::executorch::runtime::internal::dtype2index[(int)b];
810
+ ET_CHECK(ix_b != -1);
811
+ ::executorch::aten::ScalarType promoted_type =
812
+ ::executorch::runtime::internal::promoteTypesLookup[ix_a][ix_b];
813
+
814
+ if (half_to_float &&
815
+ (promoted_type == ::executorch::aten::ScalarType::Half ||
816
+ promoted_type == ::executorch::aten::ScalarType::BFloat16)) {
817
+ promoted_type = ::executorch::aten::ScalarType::Float;
818
+ }
819
+
820
+ return promoted_type;
821
+ }
822
+
823
+ template <typename T1, typename T2, bool half_to_float = false>
824
+ struct promote_types {
825
+ private:
826
+ static_assert(std::is_same_v<T1, T2> ||
827
+ (!is_qint_type<T1>::value && !is_qint_type<T2>::value),
828
+ "promote_types not valid for quantized dtypes");
829
+ static_assert(std::is_same_v<T1, T2> ||
830
+ (!is_bits_type<T1>::value && !is_bits_type<T2>::value),
831
+ "promote_types not valid for bits dtypes");
832
+ static_assert(std::is_same_v<T1, T2> ||
833
+ (!is_float8_type<T1>::value && !is_float8_type<T2>::value),
834
+ "promote_types not valid for float8 dtypes");
835
+ static_assert(std::is_same_v<T1, T2> ||
836
+ (!is_barebones_unsigned_type<T1>::value &&
837
+ !is_barebones_unsigned_type<T2>::value),
838
+ "promote_types not valid for barebones unsigned dtypes");
839
+
840
+ using promoted_type_not_respecting_half_to_float =
841
+ typename ScalarTypeToCppType<promoteTypes(
842
+ CppTypeToScalarType<T1>::value,
843
+ CppTypeToScalarType<T2>::value)>::type;
844
+
845
+ public:
846
+ using type = std::conditional_t<
847
+ half_to_float &&
848
+ (std::is_same_v<promoted_type_not_respecting_half_to_float,
849
+ typename ScalarTypeToCppType<
850
+ ::executorch::aten::ScalarType::Half>::type> ||
851
+ std::is_same_v<promoted_type_not_respecting_half_to_float,
852
+ typename ScalarTypeToCppType<
853
+ ::executorch::aten::ScalarType::BFloat16>::type>),
854
+ typename ScalarTypeToCppType<::executorch::aten::ScalarType::Float>::type,
855
+ promoted_type_not_respecting_half_to_float>;
856
+ };
857
+
858
+ //
859
+ // Helper macros for switch case macros (see below)
860
+ //
861
+ // These macros are not meant to be used directly. They provide an easy way to
862
+ // generate a switch statement that can handle subsets of ScalarTypes supported
863
+ // by ExecuTorch.
864
+ //
865
+
866
+ #ifdef ET_INTERNAL_CHECK_SELECTIVE_BUILD
867
+ #define ET_INTERNAL_SWITCH_CASE(enum_type, CTYPE_ALIAS, ...) \
868
+ case enum_type: { \
869
+ ET_INTERNAL_CHECK_SELECTIVE_BUILD(enum_type); \
870
+ using CTYPE_ALIAS [[maybe_unused]] = \
871
+ ::executorch::runtime::ScalarTypeToCppType<enum_type>::type; \
872
+ return __VA_ARGS__(); \
873
+ }
874
+ #else
875
+ #define ET_INTERNAL_SWITCH_CASE(enum_type, CTYPE_ALIAS, ...) \
876
+ case enum_type: { \
877
+ using CTYPE_ALIAS [[maybe_unused]] = \
878
+ ::executorch::runtime::ScalarTypeToCppType<enum_type>::type; \
879
+ return __VA_ARGS__(); \
880
+ }
881
+ #endif
882
+
883
+ #define ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, ...) \
884
+ [&] { \
885
+ const auto &_st = TYPE; \
886
+ constexpr const char *et_switch_name = NAME; \
887
+ (void)et_switch_name; /* Suppress unused var */ \
888
+ switch (_st) { \
889
+ __VA_ARGS__ \
890
+ default: \
891
+ CONTEXT.fail(torch::executor::Error::InvalidArgument); \
892
+ ET_LOG(Error, "Unhandled dtype %s for %s", \
893
+ ::executorch::runtime::toString(_st), et_switch_name); \
894
+ } \
895
+ }()
896
+
897
+ #define ET_INTERNAL_SWITCH_CASE_INT_TYPES(CTYPE_ALIAS, ...) \
898
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Byte, CTYPE_ALIAS, \
899
+ __VA_ARGS__) \
900
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Char, CTYPE_ALIAS, \
901
+ __VA_ARGS__) \
902
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Short, CTYPE_ALIAS, \
903
+ __VA_ARGS__) \
904
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Int, CTYPE_ALIAS, \
905
+ __VA_ARGS__) \
906
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Long, CTYPE_ALIAS, \
907
+ __VA_ARGS__)
908
+
909
+ #define ET_INTERNAL_SWITCH_CASE_UINT_TYPES(CTYPE_ALIAS, ...) \
910
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::UInt16, CTYPE_ALIAS, \
911
+ __VA_ARGS__) \
912
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::UInt32, CTYPE_ALIAS, \
913
+ __VA_ARGS__) \
914
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::UInt64, CTYPE_ALIAS, \
915
+ __VA_ARGS__)
916
+
917
+ #define ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES(CTYPE_ALIAS, ...) \
918
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Float, CTYPE_ALIAS, \
919
+ __VA_ARGS__) \
920
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Double, CTYPE_ALIAS, \
921
+ __VA_ARGS__)
922
+
923
+ #define ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, ...) \
924
+ ET_INTERNAL_SWITCH_CASE_INT_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
925
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES(CTYPE_ALIAS, __VA_ARGS__)
926
+
927
+ #define ET_INTERNAL_SWITCH_CASE_COMPLEX_TYPES(CTYPE_ALIAS, ...) \
928
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ComplexFloat, \
929
+ CTYPE_ALIAS, __VA_ARGS__) \
930
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ComplexDouble, \
931
+ CTYPE_ALIAS, __VA_ARGS__)
932
+
933
+ #define ET_INTERNAL_SWITCH_CASE_COMPLEXH_TYPES(CTYPE_ALIAS, ...) \
934
+ ET_INTERNAL_SWITCH_CASE_COMPLEX_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
935
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ComplexHalf, \
936
+ CTYPE_ALIAS, __VA_ARGS__)
937
+
938
+ #define ET_INTERNAL_SWITCH_CASE_QINT_TYPES(CTYPE_ALIAS, ...) \
939
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::QInt8, CTYPE_ALIAS, \
940
+ __VA_ARGS__) \
941
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::QUInt8, CTYPE_ALIAS, \
942
+ __VA_ARGS__) \
943
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::QInt32, CTYPE_ALIAS, \
944
+ __VA_ARGS__) \
945
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::QUInt4x2, \
946
+ CTYPE_ALIAS, __VA_ARGS__) \
947
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::QUInt2x4, \
948
+ CTYPE_ALIAS, __VA_ARGS__)
949
+
950
+ #define ET_INTERNAL_SWITCH_CASE_BITS_TYPES(CTYPE_ALIAS, ...) \
951
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bits1x8, \
952
+ CTYPE_ALIAS, __VA_ARGS__) \
953
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bits2x4, \
954
+ CTYPE_ALIAS, __VA_ARGS__) \
955
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bits4x2, \
956
+ CTYPE_ALIAS, __VA_ARGS__) \
957
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bits8, CTYPE_ALIAS, \
958
+ __VA_ARGS__) \
959
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bits16, CTYPE_ALIAS, \
960
+ __VA_ARGS__)
961
+
962
+ #define ET_INTERNAL_SWITCH_CASE_ALL_TYPES(CTYPE_ALIAS, ...) \
963
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
964
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Half, CTYPE_ALIAS, \
965
+ __VA_ARGS__) \
966
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::BFloat16, \
967
+ CTYPE_ALIAS, __VA_ARGS__) \
968
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bool, CTYPE_ALIAS, \
969
+ __VA_ARGS__) \
970
+ ET_INTERNAL_SWITCH_CASE_COMPLEXH_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
971
+ ET_INTERNAL_SWITCH_CASE_QINT_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
972
+ ET_INTERNAL_SWITCH_CASE_BITS_TYPES(CTYPE_ALIAS, __VA_ARGS__)
973
+
974
+ #define ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND(ADDITIONAL, CTYPE_ALIAS, ...) \
975
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
976
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL, \
977
+ CTYPE_ALIAS, __VA_ARGS__)
978
+
979
+ #define ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND2(ADDITIONAL1, ADDITIONAL2, \
980
+ CTYPE_ALIAS, ...) \
981
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
982
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL1, \
983
+ CTYPE_ALIAS, __VA_ARGS__) \
984
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL2, \
985
+ CTYPE_ALIAS, __VA_ARGS__)
986
+
987
+ #define ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND3(ADDITIONAL1, ADDITIONAL2, \
988
+ ADDITIONAL3, CTYPE_ALIAS, ...) \
989
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
990
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL1, \
991
+ CTYPE_ALIAS, __VA_ARGS__) \
992
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL2, \
993
+ CTYPE_ALIAS, __VA_ARGS__) \
994
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL3, \
995
+ CTYPE_ALIAS, __VA_ARGS__)
996
+
997
+ #define ET_INTERNAL_SWITCH_CASE_INT_TYPES_AND(ADDITIONAL, CTYPE_ALIAS, ...) \
998
+ ET_INTERNAL_SWITCH_CASE_INT_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
999
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL, \
1000
+ CTYPE_ALIAS, __VA_ARGS__)
1001
+
1002
+ #define ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND(ADDITIONAL, CTYPE_ALIAS, ...) \
1003
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES(CTYPE_ALIAS, __VA_ARGS__) \
1004
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL, \
1005
+ CTYPE_ALIAS, __VA_ARGS__)
1006
+
1007
+ #define ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND2(ADDITIONAL1, ADDITIONAL2, \
1008
+ CTYPE_ALIAS, ...) \
1009
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND(ADDITIONAL1, CTYPE_ALIAS, \
1010
+ __VA_ARGS__) \
1011
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL2, \
1012
+ CTYPE_ALIAS, __VA_ARGS__)
1013
+
1014
+ #define ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND3( \
1015
+ ADDITIONAL1, ADDITIONAL2, ADDITIONAL3, CTYPE_ALIAS, ...) \
1016
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND2(ADDITIONAL1, ADDITIONAL2, \
1017
+ CTYPE_ALIAS, __VA_ARGS__) \
1018
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::ADDITIONAL3, \
1019
+ CTYPE_ALIAS, __VA_ARGS__)
1020
+
1021
+ #define ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_TYPES(CTYPE_ALIAS, ...) \
1022
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bool, CTYPE_ALIAS, \
1023
+ __VA_ARGS__) \
1024
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Long, CTYPE_ALIAS, \
1025
+ __VA_ARGS__) \
1026
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Double, CTYPE_ALIAS, \
1027
+ __VA_ARGS__)
1028
+
1029
+ #define ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_REAL_TYPES(CTYPE_ALIAS, ...) \
1030
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Long, CTYPE_ALIAS, \
1031
+ __VA_ARGS__) \
1032
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Double, CTYPE_ALIAS, \
1033
+ __VA_ARGS__)
1034
+
1035
+ #define ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_INTB_TYPES(CTYPE_ALIAS, ...) \
1036
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bool, CTYPE_ALIAS, \
1037
+ __VA_ARGS__) \
1038
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Long, CTYPE_ALIAS, \
1039
+ __VA_ARGS__)
1040
+
1041
+ #define ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_FLOATB_TYPES(CTYPE_ALIAS, ...) \
1042
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Bool, CTYPE_ALIAS, \
1043
+ __VA_ARGS__) \
1044
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::Double, CTYPE_ALIAS, \
1045
+ __VA_ARGS__)
1046
+
1047
+ //
1048
+ // Switch case macros
1049
+ //
1050
+ // These macros provide an easy way to generate switch statements that apply a
1051
+ // common lambda function to subsets of ScalarTypes supported by ExecuTorch.
1052
+ // The lambda function can type specialize to the ctype associated with the
1053
+ // ScalarType being handled through an alias passed as the CTYPE_ALIAS argument.
1054
+ //
1055
+ // Arguments:
1056
+ // - ADDITIONAL: Additional ScalarType case to add
1057
+ // - TYPE: The ScalarType to handle through the switch statement
1058
+ // - CONTEXT: The KernelRuntimeContext instance used for error handling, etc.
1059
+ // - NAME: A name for this operation which will be used in error messages
1060
+ // - CTYPE_ALIAS: A typedef for the ctype associated with the ScalarType.
1061
+ // - [&](){...}: A lambda function to be applied to each ScalarType case
1062
+ //
1063
+ // An example usage is:
1064
+ //
1065
+ // ET_SWITCH_REAL_TYPES(input.scalar_type(), "example", CTYPE, [&]() {
1066
+ // output.mutable_data_ptr<CTYPE>[0] = input.const_data_ptr<CTYPE>[0];
1067
+ // });
1068
+ //
1069
+ // Note that these can be nested as well:
1070
+ //
1071
+ // ET_SWITCH_REAL_TYPES(input.scalar_type(), "example", CTYPE_IN, [&]() {
1072
+ // ET_SWITCH_REAL_TYPES(output.scalar_type(), "example", CTYPE_OUT, [&]() {
1073
+ // output.mutable_data_ptr<CTYPE_OUT>[0] =
1074
+ // input.const_data_ptr<CTYPE_IN>[0];
1075
+ // });
1076
+ // });
1077
+ //
1078
+ // These macros are adapted from Dispatch.h in the ATen library. The primary
1079
+ // difference is that the CTYPE_ALIAS argument is exposed to users, which is
1080
+ // used to alias the ctype associated with the ScalarType that is being handled.
1081
+ //
1082
+
1083
+ #define ET_SWITCH_ALL_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1084
+ ET_INTERNAL_SWITCH( \
1085
+ TYPE, CONTEXT, NAME, \
1086
+ ET_INTERNAL_SWITCH_CASE_ALL_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1087
+
1088
+ #define ET_SWITCH_REAL_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1089
+ ET_INTERNAL_SWITCH( \
1090
+ TYPE, CONTEXT, NAME, \
1091
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1092
+
1093
+ #define ET_SWITCH_REAL_TYPES_AND(ADDITIONAL, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1094
+ ...) \
1095
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1096
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND( \
1097
+ ADDITIONAL, CTYPE_ALIAS, __VA_ARGS__))
1098
+
1099
+ #define ET_SWITCH_REAL_TYPES_AND2(ADDITIONAL1, ADDITIONAL2, TYPE, CONTEXT, \
1100
+ NAME, CTYPE_ALIAS, ...) \
1101
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1102
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND2( \
1103
+ ADDITIONAL1, ADDITIONAL2, CTYPE_ALIAS, __VA_ARGS__))
1104
+
1105
+ #define ET_SWITCH_REAL_TYPES_AND3(ADDITIONAL1, ADDITIONAL2, ADDITIONAL3, TYPE, \
1106
+ CONTEXT, NAME, CTYPE_ALIAS, ...) \
1107
+ ET_INTERNAL_SWITCH( \
1108
+ TYPE, CONTEXT, NAME, \
1109
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND3( \
1110
+ ADDITIONAL1, ADDITIONAL2, ADDITIONAL3, CTYPE_ALIAS, __VA_ARGS__))
1111
+
1112
+ #define ET_SWITCH_REALH_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1113
+ ET_SWITCH_REAL_TYPES_AND(Half, TYPE, CONTEXT, NAME, CTYPE_ALIAS, __VA_ARGS__)
1114
+
1115
+ #define ET_SWITCH_REALHBF16_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1116
+ ET_SWITCH_REAL_TYPES_AND2(Half, BFloat16, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1117
+ __VA_ARGS__)
1118
+
1119
+ #define ET_SWITCH_REALB_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1120
+ ET_SWITCH_REAL_TYPES_AND(Bool, TYPE, CONTEXT, NAME, CTYPE_ALIAS, __VA_ARGS__)
1121
+
1122
+ #define ET_SWITCH_REALHB_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1123
+ ET_SWITCH_REAL_TYPES_AND2(Half, Bool, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1124
+ __VA_ARGS__)
1125
+
1126
+ #define ET_SWITCH_REALHBBF16_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1127
+ ET_SWITCH_REAL_TYPES_AND3(Half, Bool, BFloat16, TYPE, CONTEXT, NAME, \
1128
+ CTYPE_ALIAS, __VA_ARGS__)
1129
+
1130
+ #define ET_SWITCH_REALHBBF16_AND_UINT_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1131
+ ...) \
1132
+ ET_INTERNAL_SWITCH( \
1133
+ TYPE, CONTEXT, NAME, \
1134
+ ET_INTERNAL_SWITCH_CASE_REAL_TYPES_AND3(Half, Bool, BFloat16, \
1135
+ CTYPE_ALIAS, __VA_ARGS__) \
1136
+ ET_INTERNAL_SWITCH_CASE_UINT_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1137
+
1138
+ #define ET_SWITCH_INT_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1139
+ ET_INTERNAL_SWITCH( \
1140
+ TYPE, CONTEXT, NAME, \
1141
+ ET_INTERNAL_SWITCH_CASE_INT_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1142
+
1143
+ #define ET_SWITCH_INT_TYPES_AND(ADDITIONAL, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1144
+ ...) \
1145
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1146
+ ET_INTERNAL_SWITCH_CASE_INT_TYPES_AND( \
1147
+ ADDITIONAL, CTYPE_ALIAS, __VA_ARGS__))
1148
+
1149
+ #define ET_SWITCH_FLOAT_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1150
+ ET_INTERNAL_SWITCH( \
1151
+ TYPE, CONTEXT, NAME, \
1152
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1153
+
1154
+ #define ET_SWITCH_FLOAT_TYPES_AND(ADDITIONAL, TYPE, CONTEXT, NAME, \
1155
+ CTYPE_ALIAS, ...) \
1156
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1157
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND( \
1158
+ ADDITIONAL, CTYPE_ALIAS, __VA_ARGS__))
1159
+
1160
+ #define ET_SWITCH_FLOAT_TYPES_AND2(ADDITIONAL1, ADDITIONAL2, TYPE, CONTEXT, \
1161
+ NAME, CTYPE_ALIAS, ...) \
1162
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1163
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND2( \
1164
+ ADDITIONAL1, ADDITIONAL2, CTYPE_ALIAS, __VA_ARGS__))
1165
+
1166
+ #define ET_SWITCH_FLOAT_TYPES_AND3(ADDITIONAL1, ADDITIONAL2, ADDITIONAL3, \
1167
+ TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1168
+ ET_INTERNAL_SWITCH( \
1169
+ TYPE, CONTEXT, NAME, \
1170
+ ET_INTERNAL_SWITCH_CASE_FLOAT_TYPES_AND3( \
1171
+ ADDITIONAL1, ADDITIONAL2, ADDITIONAL3, CTYPE_ALIAS, __VA_ARGS__))
1172
+
1173
+ #define ET_SWITCH_FLOATH_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1174
+ ET_SWITCH_FLOAT_TYPES_AND(Half, TYPE, CONTEXT, NAME, CTYPE_ALIAS, __VA_ARGS__)
1175
+
1176
+ #define ET_SWITCH_FLOATHBF16_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1177
+ ET_SWITCH_FLOAT_TYPES_AND2(Half, BFloat16, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1178
+ __VA_ARGS__)
1179
+
1180
+ #define ET_SWITCH_FLOATHBF16_TYPES_AND(ADDITIONAL, TYPE, CONTEXT, NAME, \
1181
+ CTYPE_ALIAS, ...) \
1182
+ ET_SWITCH_FLOAT_TYPES_AND3(Half, BFloat16, ADDITIONAL, TYPE, CONTEXT, NAME, \
1183
+ CTYPE_ALIAS, __VA_ARGS__)
1184
+
1185
+ #define ET_SWITCH_QINT_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1186
+ ET_INTERNAL_SWITCH( \
1187
+ TYPE, CONTEXT, NAME, \
1188
+ ET_INTERNAL_SWITCH_CASE_QINT_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1189
+
1190
+ #define ET_SWITCH_COMPLEX_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1191
+ ET_INTERNAL_SWITCH( \
1192
+ TYPE, CONTEXT, NAME, \
1193
+ ET_INTERNAL_SWITCH_CASE_COMPLEX_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1194
+
1195
+ #define ET_SWITCH_COMPLEXH_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1196
+ ET_INTERNAL_SWITCH( \
1197
+ TYPE, CONTEXT, NAME, \
1198
+ ET_INTERNAL_SWITCH_CASE_COMPLEXH_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1199
+
1200
+ #define ET_SWITCH_SCALAR_OBJ_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1201
+ ET_INTERNAL_SWITCH( \
1202
+ TYPE, CONTEXT, NAME, \
1203
+ ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1204
+
1205
+ #define ET_SWITCH_SCALAR_OBJ_REAL_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1206
+ ET_INTERNAL_SWITCH( \
1207
+ TYPE, CONTEXT, NAME, \
1208
+ ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_REAL_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1209
+
1210
+ #define ET_SWITCH_SCALAR_OBJ_INTB_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1211
+ ET_INTERNAL_SWITCH( \
1212
+ TYPE, CONTEXT, NAME, \
1213
+ ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_INTB_TYPES(CTYPE_ALIAS, __VA_ARGS__))
1214
+
1215
+ #define ET_SWITCH_SCALAR_OBJ_FLOATB_TYPES(TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1216
+ ...) \
1217
+ ET_INTERNAL_SWITCH(TYPE, CONTEXT, NAME, \
1218
+ ET_INTERNAL_SWITCH_CASE_SCALAR_OBJ_FLOATB_TYPES( \
1219
+ CTYPE_ALIAS, __VA_ARGS__))
1220
+
1221
+ #define ET_SWITCH_TWO_TYPES(T1, T2, TYPE, CONTEXT, NAME, CTYPE_ALIAS, ...) \
1222
+ ET_INTERNAL_SWITCH( \
1223
+ TYPE, CONTEXT, NAME, \
1224
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T1, CTYPE_ALIAS, \
1225
+ __VA_ARGS__) \
1226
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T2, \
1227
+ CTYPE_ALIAS, __VA_ARGS__))
1228
+
1229
+ #define ET_SWITCH_THREE_TYPES(T1, T2, T3, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1230
+ ...) \
1231
+ ET_INTERNAL_SWITCH( \
1232
+ TYPE, CONTEXT, NAME, \
1233
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T1, CTYPE_ALIAS, \
1234
+ __VA_ARGS__) \
1235
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T2, \
1236
+ CTYPE_ALIAS, __VA_ARGS__) \
1237
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T3, \
1238
+ CTYPE_ALIAS, __VA_ARGS__))
1239
+
1240
+ #define ET_SWITCH_FOUR_TYPES(T1, T2, T3, T4, TYPE, CONTEXT, NAME, CTYPE_ALIAS, \
1241
+ ...) \
1242
+ ET_INTERNAL_SWITCH( \
1243
+ TYPE, CONTEXT, NAME, \
1244
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T1, CTYPE_ALIAS, \
1245
+ __VA_ARGS__) \
1246
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T2, \
1247
+ CTYPE_ALIAS, __VA_ARGS__) \
1248
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T3, \
1249
+ CTYPE_ALIAS, __VA_ARGS__) \
1250
+ ET_INTERNAL_SWITCH_CASE(::executorch::aten::ScalarType::T4, \
1251
+ CTYPE_ALIAS, __VA_ARGS__))
1252
+
1253
+ } // namespace runtime
1254
+ } // namespace executorch
1255
+
1256
+ namespace executorch {
1257
+ namespace aten {
1258
+ #ifdef USE_ATEN_LIB
1259
+ using ::at::elementSize;
1260
+ #else // USE_ATEN_LIB
1261
+ using ::executorch::runtime::elementSize;
1262
+ #endif // USE_ATEN_LIB
1263
+ } // namespace aten
1264
+ } // namespace executorch
1265
+
1266
+ namespace torch {
1267
+ namespace executor {
1268
+ // TODO(T197294990): Remove these deprecated aliases once all users have moved
1269
+ // to the new `::executorch` namespaces.
1270
+ using ::executorch::runtime::can_cast;
1271
+ using ::executorch::runtime::canCast;
1272
+ using ::executorch::runtime::convert;
1273
+ using ::executorch::runtime::CppTypeToScalarType;
1274
+ using ::executorch::runtime::elementSize;
1275
+ using ::executorch::runtime::is_barebones_unsigned_type;
1276
+ using ::executorch::runtime::is_bits_type;
1277
+ using ::executorch::runtime::is_complex_type;
1278
+ using ::executorch::runtime::is_float8_type;
1279
+ using ::executorch::runtime::is_integral_type;
1280
+ using ::executorch::runtime::is_qint_type;
1281
+ using ::executorch::runtime::isBitsType;
1282
+ using ::executorch::runtime::isComplexType;
1283
+ using ::executorch::runtime::isFloatingType;
1284
+ using ::executorch::runtime::isIntegralType;
1285
+ using ::executorch::runtime::isQIntType;
1286
+ using ::executorch::runtime::isRealHBType;
1287
+ using ::executorch::runtime::isRealHType;
1288
+ using ::executorch::runtime::isRealType;
1289
+ using ::executorch::runtime::isValid;
1290
+ using ::executorch::runtime::promote_types;
1291
+ using ::executorch::runtime::promoteTypes;
1292
+ using ::executorch::runtime::ScalarTypeToCppType;
1293
+ using ::executorch::runtime::toString;
1294
+ #if !defined(USE_ATEN_LIB)
1295
+ using ::executorch::runtime::is_floating_point;
1296
+ using ::executorch::runtime::is_reduced_floating_point;
1297
+ #endif
1298
+ namespace internal {
1299
+ using ::executorch::runtime::internal::B1;
1300
+ using ::executorch::runtime::internal::C2;
1301
+ using ::executorch::runtime::internal::C4;
1302
+ using ::executorch::runtime::internal::C8;
1303
+ using ::executorch::runtime::internal::F2;
1304
+ using ::executorch::runtime::internal::F4;
1305
+ using ::executorch::runtime::internal::F8;
1306
+ using ::executorch::runtime::internal::I1;
1307
+ using ::executorch::runtime::internal::I2;
1308
+ using ::executorch::runtime::internal::I4;
1309
+ using ::executorch::runtime::internal::I8;
1310
+ using ::executorch::runtime::internal::U1;
1311
+ } // namespace internal
1312
+ } // namespace executor
1313
+ } // namespace torch