xmos-ai-tools 1.3.2.dev80__py3-none-macosx_10_15_universal2.whl

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 (395) hide show
  1. xmos_ai_tools/__init__.py +7 -0
  2. xmos_ai_tools/io_server/__init__.py +151 -0
  3. xmos_ai_tools/runtime/__init__.py +0 -0
  4. xmos_ai_tools/runtime/buildfiles/aitoolslib.cmake +13 -0
  5. xmos_ai_tools/runtime/buildfiles/aitoolslib.make +8 -0
  6. xmos_ai_tools/runtime/include/flash_server.h +74 -0
  7. xmos_ai_tools/runtime/include/flatbuffers/allocator.h +68 -0
  8. xmos_ai_tools/runtime/include/flatbuffers/array.h +243 -0
  9. xmos_ai_tools/runtime/include/flatbuffers/base.h +474 -0
  10. xmos_ai_tools/runtime/include/flatbuffers/bfbs_generator.h +43 -0
  11. xmos_ai_tools/runtime/include/flatbuffers/buffer.h +142 -0
  12. xmos_ai_tools/runtime/include/flatbuffers/buffer_ref.h +53 -0
  13. xmos_ai_tools/runtime/include/flatbuffers/code_generators.h +235 -0
  14. xmos_ai_tools/runtime/include/flatbuffers/default_allocator.h +64 -0
  15. xmos_ai_tools/runtime/include/flatbuffers/detached_buffer.h +114 -0
  16. xmos_ai_tools/runtime/include/flatbuffers/flatbuffer_builder.h +1197 -0
  17. xmos_ai_tools/runtime/include/flatbuffers/flatbuffers.h +270 -0
  18. xmos_ai_tools/runtime/include/flatbuffers/flatc.h +111 -0
  19. xmos_ai_tools/runtime/include/flatbuffers/flexbuffers.h +1897 -0
  20. xmos_ai_tools/runtime/include/flatbuffers/grpc.h +300 -0
  21. xmos_ai_tools/runtime/include/flatbuffers/hash.h +127 -0
  22. xmos_ai_tools/runtime/include/flatbuffers/idl.h +1232 -0
  23. xmos_ai_tools/runtime/include/flatbuffers/minireflect.h +419 -0
  24. xmos_ai_tools/runtime/include/flatbuffers/pch/flatc_pch.h +39 -0
  25. xmos_ai_tools/runtime/include/flatbuffers/pch/pch.h +38 -0
  26. xmos_ai_tools/runtime/include/flatbuffers/reflection.h +502 -0
  27. xmos_ai_tools/runtime/include/flatbuffers/reflection_generated.h +1449 -0
  28. xmos_ai_tools/runtime/include/flatbuffers/registry.h +128 -0
  29. xmos_ai_tools/runtime/include/flatbuffers/stl_emulation.h +509 -0
  30. xmos_ai_tools/runtime/include/flatbuffers/string.h +64 -0
  31. xmos_ai_tools/runtime/include/flatbuffers/struct.h +53 -0
  32. xmos_ai_tools/runtime/include/flatbuffers/table.h +168 -0
  33. xmos_ai_tools/runtime/include/flatbuffers/util.h +690 -0
  34. xmos_ai_tools/runtime/include/flatbuffers/vector.h +370 -0
  35. xmos_ai_tools/runtime/include/flatbuffers/vector_downward.h +271 -0
  36. xmos_ai_tools/runtime/include/flatbuffers/verifier.h +283 -0
  37. xmos_ai_tools/runtime/include/ioserver.h +44 -0
  38. xmos_ai_tools/runtime/include/lib_nn/api/TransposeConv.h +24 -0
  39. xmos_ai_tools/runtime/include/lib_nn/api/add_int16.h +27 -0
  40. xmos_ai_tools/runtime/include/lib_nn/api/add_int16_transform.h +42 -0
  41. xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16.h +22 -0
  42. xmos_ai_tools/runtime/include/lib_nn/api/dequantize_int16_transform.h +34 -0
  43. xmos_ai_tools/runtime/include/lib_nn/api/expand_8_to_16.h +8 -0
  44. xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16.h +42 -0
  45. xmos_ai_tools/runtime/include/lib_nn/api/multiply_int16_transform.h +71 -0
  46. xmos_ai_tools/runtime/include/lib_nn/api/nn_api.h +15 -0
  47. xmos_ai_tools/runtime/include/lib_nn/api/nn_bin_types.h +14 -0
  48. xmos_ai_tools/runtime/include/lib_nn/api/nn_config.h +287 -0
  49. xmos_ai_tools/runtime/include/lib_nn/api/nn_conv2d_structs.h +72 -0
  50. xmos_ai_tools/runtime/include/lib_nn/api/nn_image.h +26 -0
  51. xmos_ai_tools/runtime/include/lib_nn/api/nn_layers.h +303 -0
  52. xmos_ai_tools/runtime/include/lib_nn/api/nn_op_helper.h +132 -0
  53. xmos_ai_tools/runtime/include/lib_nn/api/nn_op_utils.h +150 -0
  54. xmos_ai_tools/runtime/include/lib_nn/api/nn_operator.h +18 -0
  55. xmos_ai_tools/runtime/include/lib_nn/api/nn_pooling.h +551 -0
  56. xmos_ai_tools/runtime/include/lib_nn/api/nn_types.h +83 -0
  57. xmos_ai_tools/runtime/include/lib_nn/api/nn_window_params.h +55 -0
  58. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16.h +54 -0
  59. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_kernel_transform.h +37 -0
  60. xmos_ai_tools/runtime/include/lib_nn/api/output_transform_fn_int16_mappings.h +13 -0
  61. xmos_ai_tools/runtime/include/lib_nn/api/quadratic_approximation.h +82 -0
  62. xmos_ai_tools/runtime/include/lib_nn/api/quadratic_interpolation.h +23 -0
  63. xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16.h +22 -0
  64. xmos_ai_tools/runtime/include/lib_nn/api/quantize_int16_transform.h +33 -0
  65. xmos_ai_tools/runtime/include/lib_nn/api/version.h +13 -0
  66. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memmove_word_aligned.h +15 -0
  67. xmos_ai_tools/runtime/include/lib_nn/api/vpu_memset_256.h +55 -0
  68. xmos_ai_tools/runtime/include/lib_nn/api/vpu_sim.h +118 -0
  69. xmos_ai_tools/runtime/include/lib_nn/api/xs3_vpu.h +216 -0
  70. xmos_ai_tools/runtime/include/lib_nn/api/xs3a_registers.h +2869 -0
  71. xmos_ai_tools/runtime/include/lib_nn/src/asm/asm_constants.h +41 -0
  72. xmos_ai_tools/runtime/include/lib_nn/src/asm/window_op_plan.h +25 -0
  73. xmos_ai_tools/runtime/include/lib_tflite_micro/api/fast_flash.h +47 -0
  74. xmos_ai_tools/runtime/include/lib_tflite_micro/api/inference_engine.h +218 -0
  75. xmos_ai_tools/runtime/include/lib_tflite_micro/api/memory_parallel_transport.h +52 -0
  76. xmos_ai_tools/runtime/include/lib_tflite_micro/api/version.h +13 -0
  77. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_config.h +17 -0
  78. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_device_memory.h +62 -0
  79. xmos_ai_tools/runtime/include/lib_tflite_micro/api/xcore_shared_config.h +31 -0
  80. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/conv2d_float.h +155 -0
  81. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_common.h +19 -0
  82. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_custom_options.h +28 -0
  83. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_error_reporter.h +32 -0
  84. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_interpreter.h +49 -0
  85. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_ops.h +71 -0
  86. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_profiler.h +49 -0
  87. xmos_ai_tools/runtime/include/lib_tflite_micro/src/tflite-xcore-kernels/xcore_utils.h +160 -0
  88. xmos_ai_tools/runtime/include/lib_tflite_micro/src/thread_call.h +119 -0
  89. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_defs.h +4 -0
  90. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_device.h +4 -0
  91. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_descriptors.h +4 -0
  92. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/legacy/usb_std_requests.h +4 -0
  93. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud.h +518 -0
  94. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_conf_default.h +11 -0
  95. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_device.h +87 -0
  96. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_descriptors.h +191 -0
  97. xmos_ai_tools/runtime/include/lib_xud/lib_xud/api/xud_std_requests.h +120 -0
  98. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/XUD_USB_Defines.h +70 -0
  99. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/hid.h +23 -0
  100. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio10.h +30 -0
  101. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudio20.h +357 -0
  102. xmos_ai_tools/runtime/include/lib_xud/lib_xud/src/user/class/usbaudiocommon.h +168 -0
  103. xmos_ai_tools/runtime/include/signal/micro/kernels/delay_flexbuffers_generated_data.h +25 -0
  104. xmos_ai_tools/runtime/include/signal/micro/kernels/energy_flexbuffers_generated_data.h +28 -0
  105. xmos_ai_tools/runtime/include/signal/micro/kernels/fft_flexbuffers_generated_data.h +37 -0
  106. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_flexbuffers_generated_data.h +25 -0
  107. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_log_flexbuffers_generated_data.h +27 -0
  108. xmos_ai_tools/runtime/include/signal/micro/kernels/filter_bank_spectral_subtraction_flexbuffers_generated_data.h +26 -0
  109. xmos_ai_tools/runtime/include/signal/micro/kernels/framer_flexbuffers_generated_data.h +25 -0
  110. xmos_ai_tools/runtime/include/signal/micro/kernels/irfft.h +31 -0
  111. xmos_ai_tools/runtime/include/signal/micro/kernels/overlap_add_flexbuffers_generated_data.h +25 -0
  112. xmos_ai_tools/runtime/include/signal/micro/kernels/pcan_flexbuffers_generated_data.h +7 -0
  113. xmos_ai_tools/runtime/include/signal/micro/kernels/rfft.h +31 -0
  114. xmos_ai_tools/runtime/include/signal/micro/kernels/stacker_flexbuffers_generated_data.h +25 -0
  115. xmos_ai_tools/runtime/include/signal/micro/kernels/window_flexbuffers_generated_data.h +25 -0
  116. xmos_ai_tools/runtime/include/signal/src/circular_buffer.h +118 -0
  117. xmos_ai_tools/runtime/include/signal/src/complex.h +29 -0
  118. xmos_ai_tools/runtime/include/signal/src/energy.h +38 -0
  119. xmos_ai_tools/runtime/include/signal/src/fft_auto_scale.h +35 -0
  120. xmos_ai_tools/runtime/include/signal/src/filter_bank.h +69 -0
  121. xmos_ai_tools/runtime/include/signal/src/filter_bank_log.h +38 -0
  122. xmos_ai_tools/runtime/include/signal/src/filter_bank_spectral_subtraction.h +73 -0
  123. xmos_ai_tools/runtime/include/signal/src/filter_bank_square_root.h +34 -0
  124. xmos_ai_tools/runtime/include/signal/src/irfft.h +84 -0
  125. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_common.h +49 -0
  126. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_float.h +31 -0
  127. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int16.h +30 -0
  128. xmos_ai_tools/runtime/include/signal/src/kiss_fft_wrappers/kiss_fft_int32.h +31 -0
  129. xmos_ai_tools/runtime/include/signal/src/log.h +30 -0
  130. xmos_ai_tools/runtime/include/signal/src/max_abs.h +31 -0
  131. xmos_ai_tools/runtime/include/signal/src/msb.h +32 -0
  132. xmos_ai_tools/runtime/include/signal/src/overlap_add.h +46 -0
  133. xmos_ai_tools/runtime/include/signal/src/pcan_argc_fixed.h +41 -0
  134. xmos_ai_tools/runtime/include/signal/src/rfft.h +85 -0
  135. xmos_ai_tools/runtime/include/signal/src/square_root.h +32 -0
  136. xmos_ai_tools/runtime/include/signal/src/window.h +31 -0
  137. xmos_ai_tools/runtime/include/signal/testdata/fft_test_data.h +48 -0
  138. xmos_ai_tools/runtime/include/tensorflow/lite/array.h +156 -0
  139. xmos_ai_tools/runtime/include/tensorflow/lite/builtin_op_data.h +22 -0
  140. xmos_ai_tools/runtime/include/tensorflow/lite/builtin_ops.h +241 -0
  141. xmos_ai_tools/runtime/include/tensorflow/lite/c/builtin_op_data.h +20 -0
  142. xmos_ai_tools/runtime/include/tensorflow/lite/c/c_api_types.h +26 -0
  143. xmos_ai_tools/runtime/include/tensorflow/lite/c/common.h +30 -0
  144. xmos_ai_tools/runtime/include/tensorflow/lite/context_util.h +54 -0
  145. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/error_reporter.h +72 -0
  146. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/flatbuffer_conversions.h +440 -0
  147. xmos_ai_tools/runtime/include/tensorflow/lite/core/api/tensor_utils.h +28 -0
  148. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/builtin_op_data.h +626 -0
  149. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/c_api_types.h +178 -0
  150. xmos_ai_tools/runtime/include/tensorflow/lite/core/c/common.h +1496 -0
  151. xmos_ai_tools/runtime/include/tensorflow/lite/core/macros.h +78 -0
  152. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/bits.h +102 -0
  153. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft.h +50 -0
  154. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_io.h +34 -0
  155. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/fft_util.h +34 -0
  156. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank.h +63 -0
  157. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_io.h +35 -0
  158. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/filterbank_util.h +50 -0
  159. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend.h +64 -0
  160. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_io.h +31 -0
  161. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/frontend_util.h +52 -0
  162. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_common.h +48 -0
  163. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/kiss_fft_int16.h +33 -0
  164. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_lut.h +40 -0
  165. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale.h +39 -0
  166. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_io.h +33 -0
  167. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/log_scale_util.h +45 -0
  168. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction.h +46 -0
  169. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_io.h +36 -0
  170. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/noise_reduction_util.h +50 -0
  171. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control.h +47 -0
  172. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/pcan_gain_control_util.h +57 -0
  173. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window.h +49 -0
  174. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_io.h +34 -0
  175. xmos_ai_tools/runtime/include/tensorflow/lite/experimental/microfrontend/lib/window_util.h +45 -0
  176. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/common.h +1358 -0
  177. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/compatibility.h +122 -0
  178. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/cppmath.h +40 -0
  179. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/max.h +35 -0
  180. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/min.h +35 -0
  181. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/optimized/neon_check.h +20 -0
  182. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor.h +141 -0
  183. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/portable_tensor_utils.h +623 -0
  184. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/quantization_util.h +292 -0
  185. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add.h +561 -0
  186. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/add_n.h +86 -0
  187. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/arg_min_max.h +88 -0
  188. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_matmul.h +275 -0
  189. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/batch_to_space_nd.h +101 -0
  190. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/binary_function.h +91 -0
  191. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_args.h +56 -0
  192. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/broadcast_to.h +97 -0
  193. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/ceil.h +37 -0
  194. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/comparisons.h +271 -0
  195. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/concatenation.h +141 -0
  196. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/conv.h +289 -0
  197. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/cumsum.h +175 -0
  198. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depth_to_space.h +79 -0
  199. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_float.h +100 -0
  200. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/depthwiseconv_uint8.h +319 -0
  201. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/dequantize.h +78 -0
  202. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/div.h +247 -0
  203. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/elu.h +37 -0
  204. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/exp.h +38 -0
  205. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fill.h +38 -0
  206. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor.h +39 -0
  207. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_div.h +35 -0
  208. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/floor_mod.h +44 -0
  209. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/fully_connected.h +323 -0
  210. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/hard_swish.h +168 -0
  211. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/add.h +250 -0
  212. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/conv.h +241 -0
  213. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/depthwise_conv.h +291 -0
  214. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/fully_connected.h +126 -0
  215. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/l2normalization.h +67 -0
  216. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/logistic.h +121 -0
  217. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mean.h +18 -0
  218. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/mul.h +194 -0
  219. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h +264 -0
  220. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/tanh.h +117 -0
  221. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/integer_ops/transpose_conv.h +224 -0
  222. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/l2normalization.h +90 -0
  223. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/leaky_relu.h +69 -0
  224. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/log_softmax.h +256 -0
  225. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/logistic.h +132 -0
  226. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/lstm_cell.h +422 -0
  227. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/maximum_minimum.h +64 -0
  228. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/mul.h +267 -0
  229. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/neg.h +37 -0
  230. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pad.h +169 -0
  231. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/pooling.h +303 -0
  232. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.h +333 -0
  233. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/portable_tensor_utils_impl.h +244 -0
  234. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/prelu.h +111 -0
  235. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/process_broadcast_shapes.h +140 -0
  236. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/quantize.h +89 -0
  237. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/reduce.h +491 -0
  238. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/requantize.h +70 -0
  239. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_bilinear.h +233 -0
  240. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/resize_nearest_neighbor.h +102 -0
  241. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/round.h +51 -0
  242. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/select.h +151 -0
  243. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/slice.h +80 -0
  244. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/softmax.h +233 -0
  245. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_batch_nd.h +109 -0
  246. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/space_to_depth.h +80 -0
  247. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/strided_slice.h +147 -0
  248. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/sub.h +465 -0
  249. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/tanh.h +129 -0
  250. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose.h +203 -0
  251. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/reference/transpose_conv.h +225 -0
  252. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/runtime_shape.h +168 -0
  253. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/strided_slice_logic.h +278 -0
  254. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/tensor_ctypes.h +42 -0
  255. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/internal/types.h +1096 -0
  256. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/kernel_util.h +341 -0
  257. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/op_macros.h +49 -0
  258. xmos_ai_tools/runtime/include/tensorflow/lite/kernels/padding.h +115 -0
  259. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h +100 -0
  260. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h +104 -0
  261. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h +58 -0
  262. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.h +63 -0
  263. xmos_ai_tools/runtime/include/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.h +144 -0
  264. xmos_ai_tools/runtime/include/tensorflow/lite/micro/benchmarks/micro_benchmark.h +95 -0
  265. xmos_ai_tools/runtime/include/tensorflow/lite/micro/compatibility.h +32 -0
  266. xmos_ai_tools/runtime/include/tensorflow/lite/micro/cortex_m_generic/debug_log_callback.h +49 -0
  267. xmos_ai_tools/runtime/include/tensorflow/lite/micro/debug_log.h +38 -0
  268. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/micro_speech/micro_model_settings.h +37 -0
  269. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/expected_output_data.h +47 -0
  270. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/input_data.h +108 -0
  271. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/network_tester/network_model.h +166 -0
  272. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/detection_responder.h +32 -0
  273. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/image_provider.h +38 -0
  274. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/main_functions.h +37 -0
  275. xmos_ai_tools/runtime/include/tensorflow/lite/micro/examples/person_detection/model_settings.h +35 -0
  276. xmos_ai_tools/runtime/include/tensorflow/lite/micro/fake_micro_context.h +70 -0
  277. xmos_ai_tools/runtime/include/tensorflow/lite/micro/flatbuffer_utils.h +65 -0
  278. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activation_utils.h +57 -0
  279. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/activations.h +64 -0
  280. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/add.h +78 -0
  281. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_function_specializations.h +141 -0
  282. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_interface.h +75 -0
  283. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_slicers.h +56 -0
  284. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/mli_tf_utils.h +310 -0
  285. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buf_mgr.h +145 -0
  286. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/arc_mli/scratch_buffers.h +78 -0
  287. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_common.h +24 -0
  288. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/ceva_tflm_lib.h +613 -0
  289. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/mcps_macros.h +115 -0
  290. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ceva/types.h +1286 -0
  291. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer.h +45 -0
  292. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/circular_buffer_flexbuffers_generated_data.h +22 -0
  293. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv.h +117 -0
  294. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/conv_test.h +94 -0
  295. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/depthwise_conv.h +80 -0
  296. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/dequantize.h +38 -0
  297. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/detection_postprocess_flexbuffers_generated_data.h +25 -0
  298. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/ethosu.h +28 -0
  299. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/fully_connected.h +112 -0
  300. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/hard_swish.h +30 -0
  301. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_runner.h +86 -0
  302. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/kernel_util.h +150 -0
  303. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/leaky_relu.h +43 -0
  304. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logical.h +35 -0
  305. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/logistic.h +42 -0
  306. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval.h +541 -0
  307. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_eval_test.h +817 -0
  308. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/lstm_shared.h +150 -0
  309. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_ops.h +158 -0
  310. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/micro_tensor_utils.h +56 -0
  311. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/mul.h +74 -0
  312. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pad.h +27 -0
  313. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/pooling.h +142 -0
  314. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/prelu.h +39 -0
  315. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/quantize.h +37 -0
  316. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reduce.h +65 -0
  317. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/reshape.h +26 -0
  318. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/softmax.h +67 -0
  319. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/strided_slice.h +40 -0
  320. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/sub.h +60 -0
  321. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/svdf.h +100 -0
  322. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/conv_test_data.h +37 -0
  323. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/testdata/lstm_test_data.h +579 -0
  324. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.h +47 -0
  325. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/hifimini/fixedpoint_utils.h +139 -0
  326. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_eval.h +216 -0
  327. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/lstm_shared.h +78 -0
  328. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa.h +38 -0
  329. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_add.h +48 -0
  330. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_conv.h +89 -0
  331. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_depthwise_conv.h +74 -0
  332. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_fully_connected.h +78 -0
  333. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pad.h +49 -0
  334. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_pooling.h +76 -0
  335. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reduce.h +47 -0
  336. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_reshape.h +44 -0
  337. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_softmax.h +58 -0
  338. xmos_ai_tools/runtime/include/tensorflow/lite/micro/kernels/xtensa/xtensa_svdf.h +39 -0
  339. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_helpers.h +64 -0
  340. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/greedy_memory_planner.h +170 -0
  341. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/linear_memory_planner.h +53 -0
  342. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/memory_plan_struct.h +73 -0
  343. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/micro_memory_planner.h +95 -0
  344. xmos_ai_tools/runtime/include/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.h +133 -0
  345. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocation_info.h +138 -0
  346. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_allocator.h +351 -0
  347. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_arena_constants.h +28 -0
  348. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_common.h +38 -0
  349. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_context.h +176 -0
  350. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_graph.h +79 -0
  351. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter.h +189 -0
  352. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_context.h +125 -0
  353. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_interpreter_graph.h +110 -0
  354. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_log.h +42 -0
  355. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_mutable_op_resolver.h +708 -0
  356. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_op_resolver.h +62 -0
  357. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler.h +140 -0
  358. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_profiler_interface.h +38 -0
  359. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_resource_variable.h +89 -0
  360. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_time.h +36 -0
  361. xmos_ai_tools/runtime/include/tensorflow/lite/micro/micro_utils.h +162 -0
  362. xmos_ai_tools/runtime/include/tensorflow/lite/micro/mock_micro_graph.h +60 -0
  363. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/interpreter/src/python_ops_resolver.h +21 -0
  364. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size.h +30 -0
  365. xmos_ai_tools/runtime/include/tensorflow/lite/micro/python/tflite_size/src/flatbuffer_size_wrapper.h +33 -0
  366. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_allocator.h +125 -0
  367. xmos_ai_tools/runtime/include/tensorflow/lite/micro/recording_micro_interpreter.h +69 -0
  368. xmos_ai_tools/runtime/include/tensorflow/lite/micro/system_setup.h +27 -0
  369. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helper_custom_ops.h +49 -0
  370. xmos_ai_tools/runtime/include/tensorflow/lite/micro/test_helpers.h +334 -0
  371. xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/micro_test.h +267 -0
  372. xmos_ai_tools/runtime/include/tensorflow/lite/micro/testing/test_conv_model.h +23 -0
  373. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.h +45 -0
  374. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.h +36 -0
  375. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/log_utils.h +273 -0
  376. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/metrics.h +41 -0
  377. xmos_ai_tools/runtime/include/tensorflow/lite/micro/tools/benchmarking/op_resolver.h +127 -0
  378. xmos_ai_tools/runtime/include/tensorflow/lite/portable_type_to_tflitetype.h +75 -0
  379. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_generated.h +24644 -0
  380. xmos_ai_tools/runtime/include/tensorflow/lite/schema/schema_utils.h +33 -0
  381. xmos_ai_tools/runtime/include/tile_ram_server.h +38 -0
  382. xmos_ai_tools/runtime/lib/libhost_xtflitemicro.a +0 -0
  383. xmos_ai_tools/runtime/lib/libxtflitemicro.a +0 -0
  384. xmos_ai_tools/xformer/__init__.py +60 -0
  385. xmos_ai_tools/xformer/flash.py +190 -0
  386. xmos_ai_tools/xinterpreters/__init__.py +1 -0
  387. xmos_ai_tools/xinterpreters/exceptions.py +38 -0
  388. xmos_ai_tools/xinterpreters/host_interpreter.py +652 -0
  389. xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.1.0.1.dylib +0 -0
  390. xmos_ai_tools/xinterpreters/libs/macos/xtflm_python.dylib +0 -0
  391. xmos_ai_tools-1.3.2.dev80.data/data/bin/xcore-opt +0 -0
  392. xmos_ai_tools-1.3.2.dev80.dist-info/METADATA +33 -0
  393. xmos_ai_tools-1.3.2.dev80.dist-info/RECORD +395 -0
  394. xmos_ai_tools-1.3.2.dev80.dist-info/WHEEL +5 -0
  395. xmos_ai_tools-1.3.2.dev80.dist-info/top_level.txt +1 -0
@@ -0,0 +1,708 @@
1
+ /* Copyright 2023 The TensorFlow Authors. All Rights Reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+ ==============================================================================*/
15
+ #ifndef TENSORFLOW_LITE_MICRO_MICRO_MUTABLE_OP_RESOLVER_H_
16
+ #define TENSORFLOW_LITE_MICRO_MICRO_MUTABLE_OP_RESOLVER_H_
17
+
18
+ #include <cstdio>
19
+ #include <cstring>
20
+
21
+ #include "tensorflow/lite/c/common.h"
22
+ #include "tensorflow/lite/core/api/flatbuffer_conversions.h"
23
+ #include "tensorflow/lite/kernels/internal/compatibility.h"
24
+ #include "tensorflow/lite/kernels/op_macros.h"
25
+ #include "tensorflow/lite/micro/compatibility.h"
26
+ #include "tensorflow/lite/micro/kernels/add.h"
27
+ #include "tensorflow/lite/micro/kernels/conv.h"
28
+ #include "tensorflow/lite/micro/kernels/depthwise_conv.h"
29
+ #include "tensorflow/lite/micro/kernels/ethosu.h"
30
+ #include "tensorflow/lite/micro/kernels/fully_connected.h"
31
+ #include "tensorflow/lite/micro/kernels/micro_ops.h"
32
+ #include "tensorflow/lite/micro/kernels/pooling.h"
33
+ #include "tensorflow/lite/micro/kernels/reduce.h"
34
+ #include "tensorflow/lite/micro/kernels/softmax.h"
35
+ #include "tensorflow/lite/micro/micro_log.h"
36
+ #include "tensorflow/lite/micro/micro_op_resolver.h"
37
+ #include "tensorflow/lite/schema/schema_generated.h"
38
+
39
+ namespace tflite_micro {
40
+ TFLMRegistration* Register_DETECTION_POSTPROCESS();
41
+
42
+ template <unsigned int tOpCount>
43
+ class MicroMutableOpResolver : public MicroOpResolver {
44
+ public:
45
+ TF_LITE_REMOVE_VIRTUAL_DELETE
46
+
47
+ explicit MicroMutableOpResolver() {}
48
+
49
+ const TFLMRegistration* FindOp(tflite_micro::BuiltinOperator op) const override {
50
+ if (op == BuiltinOperator_CUSTOM) return nullptr;
51
+
52
+ for (unsigned int i = 0; i < registrations_len_; ++i) {
53
+ const TFLMRegistration& registration = registrations_[i];
54
+ if (registration.builtin_code == op) {
55
+ return &registration;
56
+ }
57
+ }
58
+ return nullptr;
59
+ }
60
+
61
+ const TFLMRegistration* FindOp(const char* op) const override {
62
+ for (unsigned int i = 0; i < registrations_len_; ++i) {
63
+ const TFLMRegistration& registration = registrations_[i];
64
+ if ((registration.builtin_code == BuiltinOperator_CUSTOM) &&
65
+ (strcmp(registration.custom_name, op) == 0)) {
66
+ return &registration;
67
+ }
68
+ }
69
+ return nullptr;
70
+ }
71
+
72
+ TfLiteBridgeBuiltinParseFunction GetOpDataParser(
73
+ BuiltinOperator op) const override {
74
+ TFLITE_DCHECK(num_buitin_ops_ <= tOpCount);
75
+ for (unsigned int i = 0; i < num_buitin_ops_; ++i) {
76
+ if (builtin_codes_[i] == op) return builtin_parsers_[i];
77
+ }
78
+ return nullptr;
79
+ }
80
+
81
+ // Registers a Custom Operator with the MicroOpResolver.
82
+ //
83
+ // Only the first call for a given name will be successful. i.e. if this
84
+ // function is called again for a previously added Custom Operator, the
85
+ // MicroOpResolver will be unchanged and this function will return
86
+ // kTfLiteError.
87
+ TfLiteStatus AddCustom(const char* name,
88
+ const TFLMRegistration* registration) {
89
+ if (registrations_len_ >= tOpCount) {
90
+ MicroPrintf(
91
+ "Couldn't register custom op '%s', resolver size is too"
92
+ "small (%d)",
93
+ name, tOpCount);
94
+ return kTfLiteError;
95
+ }
96
+
97
+ if (FindOp(name) != nullptr) {
98
+ MicroPrintf("Calling AddCustom for the same op more than once ");
99
+ MicroPrintf("is not supported (Op: %s).", name);
100
+ return kTfLiteError;
101
+ }
102
+
103
+ TFLMRegistration* new_registration = &registrations_[registrations_len_];
104
+ registrations_len_ += 1;
105
+
106
+ *new_registration = *registration;
107
+ new_registration->builtin_code = BuiltinOperator_CUSTOM;
108
+ new_registration->custom_name = name;
109
+ return kTfLiteOk;
110
+ }
111
+
112
+ // The Add* functions below add the various Builtin operators to the
113
+ // MicroMutableOpResolver object.
114
+
115
+ TfLiteStatus AddAbs() {
116
+ return AddBuiltin(BuiltinOperator_ABS, Register_ABS(), ParseAbs);
117
+ }
118
+
119
+ TfLiteStatus AddAdd(const TFLMRegistration& registration = Register_ADD()) {
120
+ return AddBuiltin(BuiltinOperator_ADD, registration, ParseAdd);
121
+ }
122
+
123
+ TfLiteStatus AddAddN() {
124
+ return AddBuiltin(BuiltinOperator_ADD_N, tflite_micro::Register_ADD_N(),
125
+ ParseAddN);
126
+ }
127
+
128
+ TfLiteStatus AddArgMax() {
129
+ return AddBuiltin(BuiltinOperator_ARG_MAX, Register_ARG_MAX(), ParseArgMax);
130
+ }
131
+
132
+ TfLiteStatus AddArgMin() {
133
+ return AddBuiltin(BuiltinOperator_ARG_MIN, Register_ARG_MIN(), ParseArgMin);
134
+ }
135
+
136
+ TfLiteStatus AddAssignVariable() {
137
+ return AddBuiltin(BuiltinOperator_ASSIGN_VARIABLE,
138
+ tflite_micro::Register_ASSIGN_VARIABLE(), ParseAssignVariable);
139
+ }
140
+
141
+ TfLiteStatus AddAveragePool2D(
142
+ const TFLMRegistration& registration = Register_AVERAGE_POOL_2D()) {
143
+ return AddBuiltin(BuiltinOperator_AVERAGE_POOL_2D, registration, ParsePool);
144
+ }
145
+
146
+ TfLiteStatus AddBatchMatMul() {
147
+ return AddBuiltin(BuiltinOperator_BATCH_MATMUL,
148
+ tflite_micro::Register_BATCH_MATMUL(), ParseBatchMatMul);
149
+ }
150
+
151
+ TfLiteStatus AddBatchToSpaceNd() {
152
+ return AddBuiltin(BuiltinOperator_BATCH_TO_SPACE_ND,
153
+ Register_BATCH_TO_SPACE_ND(), ParseBatchToSpaceNd);
154
+ }
155
+
156
+ TfLiteStatus AddBroadcastArgs() {
157
+ return AddBuiltin(BuiltinOperator_BROADCAST_ARGS, Register_BROADCAST_ARGS(),
158
+ ParseBroadcastArgs);
159
+ }
160
+
161
+ TfLiteStatus AddBroadcastTo() {
162
+ return AddBuiltin(BuiltinOperator_BROADCAST_TO, Register_BROADCAST_TO(),
163
+ ParseBroadcastTo);
164
+ }
165
+
166
+ TfLiteStatus AddCallOnce() {
167
+ return AddBuiltin(BuiltinOperator_CALL_ONCE, Register_CALL_ONCE(),
168
+ ParseCallOnce);
169
+ }
170
+
171
+ TfLiteStatus AddCast() {
172
+ return AddBuiltin(BuiltinOperator_CAST, Register_CAST(), ParseCast);
173
+ }
174
+
175
+ TfLiteStatus AddCeil() {
176
+ return AddBuiltin(BuiltinOperator_CEIL, Register_CEIL(), ParseCeil);
177
+ }
178
+
179
+ TfLiteStatus AddCircularBuffer() {
180
+ return AddCustom("CIRCULAR_BUFFER", tflite_micro::Register_CIRCULAR_BUFFER());
181
+ }
182
+
183
+ TfLiteStatus AddConcatenation() {
184
+ return AddBuiltin(BuiltinOperator_CONCATENATION, Register_CONCATENATION(),
185
+ ParseConcatenation);
186
+ }
187
+
188
+ TfLiteStatus AddConv2D(
189
+ const TFLMRegistration& registration = Register_CONV_2D()) {
190
+ return AddBuiltin(BuiltinOperator_CONV_2D, registration, ParseConv2D);
191
+ }
192
+
193
+ TfLiteStatus AddCos() {
194
+ return AddBuiltin(BuiltinOperator_COS, tflite_micro::Register_COS(), ParseCos);
195
+ }
196
+
197
+ TfLiteStatus AddCumSum() {
198
+ return AddBuiltin(BuiltinOperator_CUMSUM, tflite_micro::Register_CUMSUM(),
199
+ ParseCumsum);
200
+ }
201
+
202
+ TfLiteStatus AddDelay() {
203
+ // TODO(b/286250473): change back name to "Delay" and remove namespace
204
+ return AddCustom("SignalDelay", tflite_micro::tflm_signal::Register_DELAY());
205
+ }
206
+
207
+ TfLiteStatus AddDepthToSpace() {
208
+ return AddBuiltin(BuiltinOperator_DEPTH_TO_SPACE,
209
+ tflite_micro::Register_DEPTH_TO_SPACE(), ParseDepthToSpace);
210
+ }
211
+
212
+ TfLiteStatus AddDepthwiseConv2D(
213
+ const TFLMRegistration& registration = Register_DEPTHWISE_CONV_2D()) {
214
+ return AddBuiltin(BuiltinOperator_DEPTHWISE_CONV_2D, registration,
215
+ ParseDepthwiseConv2D);
216
+ }
217
+
218
+ TfLiteStatus AddDequantize() {
219
+ return AddBuiltin(BuiltinOperator_DEQUANTIZE, tflite_micro::Register_DEQUANTIZE(),
220
+ ParseDequantize);
221
+ }
222
+
223
+ TfLiteStatus AddDetectionPostprocess() {
224
+ return AddCustom("TFLite_Detection_PostProcess",
225
+ tflite_micro::Register_DETECTION_POSTPROCESS());
226
+ }
227
+
228
+ TfLiteStatus AddDiv() {
229
+ return AddBuiltin(BuiltinOperator_DIV, tflite_micro::Register_DIV(), ParseDiv);
230
+ }
231
+
232
+ TfLiteStatus AddEmbeddingLookup() {
233
+ return AddBuiltin(BuiltinOperator_EMBEDDING_LOOKUP,
234
+ Register_EMBEDDING_LOOKUP(), ParseEmbeddingLookup);
235
+ }
236
+
237
+ TfLiteStatus AddEnergy() {
238
+ // TODO(b/286250473): change back name to "Energy" and remove namespace
239
+ return AddCustom("SignalEnergy", tflite_micro::tflm_signal::Register_ENERGY());
240
+ }
241
+
242
+ TfLiteStatus AddElu() {
243
+ return AddBuiltin(BuiltinOperator_ELU, tflite_micro::Register_ELU(), ParseElu);
244
+ }
245
+
246
+ TfLiteStatus AddEqual() {
247
+ return AddBuiltin(BuiltinOperator_EQUAL, Register_EQUAL(), ParseEqual);
248
+ }
249
+
250
+ TfLiteStatus AddEthosU() {
251
+ TFLMRegistration* registration = tflite_micro::Register_ETHOSU();
252
+ if (registration) {
253
+ return AddCustom(tflite_micro::GetString_ETHOSU(), registration);
254
+ }
255
+ return kTfLiteOk;
256
+ }
257
+
258
+ TfLiteStatus AddExp() {
259
+ return AddBuiltin(BuiltinOperator_EXP, Register_EXP(), ParseExp);
260
+ }
261
+
262
+ TfLiteStatus AddExpandDims() {
263
+ return AddBuiltin(BuiltinOperator_EXPAND_DIMS, Register_EXPAND_DIMS(),
264
+ ParseExpandDims);
265
+ }
266
+
267
+ TfLiteStatus AddFftAutoScale() {
268
+ // TODO(b/286250473): change back name and remove namespace
269
+ return AddCustom("SignalFftAutoScale",
270
+ tflite_micro::tflm_signal::Register_FFT_AUTO_SCALE());
271
+ }
272
+
273
+ TfLiteStatus AddFill() {
274
+ return AddBuiltin(BuiltinOperator_FILL, tflite_micro::Register_FILL(), ParseFill);
275
+ }
276
+
277
+ TfLiteStatus AddFilterBank() {
278
+ // TODO(b/286250473): change back name to "FilterBank" and remove namespace
279
+ return AddCustom("SignalFilterBank",
280
+ tflite_micro::tflm_signal::Register_FILTER_BANK());
281
+ }
282
+ TfLiteStatus AddFilterBankLog() {
283
+ // TODO(b/286250473): change back name to "FilterBankLog" and remove
284
+ // namespace
285
+ return AddCustom("SignalFilterBankLog",
286
+ tflite_micro::tflm_signal::Register_FILTER_BANK_LOG());
287
+ }
288
+ TfLiteStatus AddFilterBankSquareRoot() {
289
+ // TODO(b/286250473): change back name to "FilterBankSquareRoot" and remove
290
+ // namespace
291
+ return AddCustom("SignalFilterBankSquareRoot",
292
+ tflite_micro::tflm_signal::Register_FILTER_BANK_SQUARE_ROOT());
293
+ }
294
+ TfLiteStatus AddFilterBankSpectralSubtraction() {
295
+ // TODO(b/286250473): change back name to "FilterBankSpectralSubtraction"
296
+ // and remove namespace
297
+ return AddCustom(
298
+ "SignalFilterBankSpectralSubtraction",
299
+ tflite_micro::tflm_signal::Register_FILTER_BANK_SPECTRAL_SUBTRACTION());
300
+ }
301
+
302
+ TfLiteStatus AddFloor() {
303
+ return AddBuiltin(BuiltinOperator_FLOOR, Register_FLOOR(), ParseFloor);
304
+ }
305
+
306
+ TfLiteStatus AddFloorDiv() {
307
+ return AddBuiltin(BuiltinOperator_FLOOR_DIV, tflite_micro::Register_FLOOR_DIV(),
308
+ ParseFloorDiv);
309
+ }
310
+
311
+ TfLiteStatus AddFloorMod() {
312
+ return AddBuiltin(BuiltinOperator_FLOOR_MOD, tflite_micro::Register_FLOOR_MOD(),
313
+ ParseFloorMod);
314
+ }
315
+
316
+ TfLiteStatus AddFramer() {
317
+ // TODO(b/286250473): change back name to "Framer" and remove namespace
318
+ return AddCustom("SignalFramer", tflite_micro::tflm_signal::Register_FRAMER());
319
+ }
320
+
321
+ TfLiteStatus AddFullyConnected(
322
+ const TFLMRegistration& registration = Register_FULLY_CONNECTED()) {
323
+ return AddBuiltin(BuiltinOperator_FULLY_CONNECTED, registration,
324
+ ParseFullyConnected);
325
+ }
326
+
327
+ TfLiteStatus AddGather() {
328
+ return AddBuiltin(BuiltinOperator_GATHER, tflite_micro::Register_GATHER(),
329
+ ParseGather);
330
+ }
331
+
332
+ TfLiteStatus AddGatherNd() {
333
+ return AddBuiltin(BuiltinOperator_GATHER_ND, tflite_micro::Register_GATHER_ND(),
334
+ ParseGatherNd);
335
+ }
336
+
337
+ TfLiteStatus AddGreater() {
338
+ return AddBuiltin(BuiltinOperator_GREATER, Register_GREATER(),
339
+ ParseGreater);
340
+ }
341
+
342
+ TfLiteStatus AddGreaterEqual() {
343
+ return AddBuiltin(BuiltinOperator_GREATER_EQUAL, Register_GREATER_EQUAL(),
344
+ ParseGreaterEqual);
345
+ }
346
+
347
+ TfLiteStatus AddHardSwish() {
348
+ return AddBuiltin(BuiltinOperator_HARD_SWISH, tflite_micro::Register_HARD_SWISH(),
349
+ ParseHardSwish);
350
+ }
351
+
352
+ TfLiteStatus AddIf() {
353
+ return AddBuiltin(BuiltinOperator_IF, tflite_micro::Register_IF(), ParseIf);
354
+ }
355
+
356
+ TfLiteStatus AddIrfft(const TFLMRegistration* registration =
357
+ tflite::tflm_signal::Register_IRFFT()) {
358
+ // TODO(b/286250473): change back name and remove namespace
359
+ return AddCustom("SignalIrfft", registration);
360
+ }
361
+
362
+ TfLiteStatus AddL2Normalization() {
363
+ return AddBuiltin(BuiltinOperator_L2_NORMALIZATION,
364
+ Register_L2_NORMALIZATION(), ParseL2Normalization);
365
+ }
366
+
367
+ TfLiteStatus AddL2Pool2D() {
368
+ return AddBuiltin(BuiltinOperator_L2_POOL_2D, tflite_micro::Register_L2_POOL_2D(),
369
+ ParsePool);
370
+ }
371
+
372
+ TfLiteStatus AddLeakyRelu() {
373
+ return AddBuiltin(BuiltinOperator_LEAKY_RELU, tflite_micro::Register_LEAKY_RELU(),
374
+ ParseLeakyRelu);
375
+ }
376
+
377
+ TfLiteStatus AddLess() {
378
+ return AddBuiltin(BuiltinOperator_LESS, Register_LESS(), ParseLess);
379
+ }
380
+
381
+ TfLiteStatus AddLessEqual() {
382
+ return AddBuiltin(BuiltinOperator_LESS_EQUAL, Register_LESS_EQUAL(),
383
+ ParseLessEqual);
384
+ }
385
+
386
+ TfLiteStatus AddLog() {
387
+ return AddBuiltin(BuiltinOperator_LOG, Register_LOG(), ParseLog);
388
+ }
389
+
390
+ TfLiteStatus AddLogicalAnd() {
391
+ return AddBuiltin(BuiltinOperator_LOGICAL_AND,
392
+ tflite_micro::Register_LOGICAL_AND(), ParseLogicalAnd);
393
+ }
394
+
395
+ TfLiteStatus AddLogicalNot() {
396
+ return AddBuiltin(BuiltinOperator_LOGICAL_NOT, Register_LOGICAL_NOT(),
397
+ ParseLogicalNot);
398
+ }
399
+
400
+ TfLiteStatus AddLogicalOr() {
401
+ return AddBuiltin(BuiltinOperator_LOGICAL_OR, tflite_micro::Register_LOGICAL_OR(),
402
+ ParseLogicalOr);
403
+ }
404
+
405
+ TfLiteStatus AddLogistic() {
406
+ return AddBuiltin(BuiltinOperator_LOGISTIC, tflite_micro::Register_LOGISTIC(),
407
+ ParseLogistic);
408
+ }
409
+
410
+ TfLiteStatus AddLogSoftmax() {
411
+ return AddBuiltin(BuiltinOperator_LOG_SOFTMAX,
412
+ tflite_micro::Register_LOG_SOFTMAX(), ParseLogSoftmax);
413
+ }
414
+
415
+ TfLiteStatus AddMaximum() {
416
+ return AddBuiltin(BuiltinOperator_MAXIMUM, Register_MAXIMUM(),
417
+ ParseMaximum);
418
+ }
419
+
420
+ TfLiteStatus AddMaxPool2D(
421
+ const TFLMRegistration& registration = Register_MAX_POOL_2D()) {
422
+ return AddBuiltin(BuiltinOperator_MAX_POOL_2D, registration, ParsePool);
423
+ }
424
+
425
+ TfLiteStatus AddMirrorPad() {
426
+ return AddBuiltin(BuiltinOperator_MIRROR_PAD, tflite_micro::Register_MIRROR_PAD(),
427
+ ParseMirrorPad);
428
+ }
429
+
430
+ TfLiteStatus AddMean() {
431
+ return AddBuiltin(BuiltinOperator_MEAN, Register_MEAN(), ParseReducer);
432
+ }
433
+
434
+ TfLiteStatus AddMinimum() {
435
+ return AddBuiltin(BuiltinOperator_MINIMUM, Register_MINIMUM(),
436
+ ParseMinimum);
437
+ }
438
+
439
+ TfLiteStatus AddMul(const TFLMRegistration& registration = Register_MUL()) {
440
+ return AddBuiltin(BuiltinOperator_MUL, registration, ParseMul);
441
+ }
442
+
443
+ TfLiteStatus AddNeg() {
444
+ return AddBuiltin(BuiltinOperator_NEG, Register_NEG(), ParseNeg);
445
+ }
446
+
447
+ TfLiteStatus AddNotEqual() {
448
+ return AddBuiltin(BuiltinOperator_NOT_EQUAL, Register_NOT_EQUAL(),
449
+ ParseNotEqual);
450
+ }
451
+
452
+ TfLiteStatus AddOverlapAdd() {
453
+ // TODO(b/286250473): change back name to "OverlapAdd" and remove namespace
454
+ return AddCustom("SignalOverlapAdd",
455
+ tflite_micro::tflm_signal::Register_OVERLAP_ADD());
456
+ }
457
+
458
+ TfLiteStatus AddPack() {
459
+ return AddBuiltin(BuiltinOperator_PACK, Register_PACK(), ParsePack);
460
+ }
461
+
462
+ TfLiteStatus AddPad(const TFLMRegistration& registration = Register_PAD()) {
463
+ return AddBuiltin(BuiltinOperator_PAD, registration, ParsePad);
464
+ }
465
+
466
+ TfLiteStatus AddPadV2() {
467
+ return AddBuiltin(BuiltinOperator_PADV2, Register_PADV2(), ParsePadV2);
468
+ }
469
+
470
+ TfLiteStatus AddPCAN() {
471
+ // TODO(b/286250473): change back name to "PCAN" and remove namespace
472
+ return AddCustom("SignalPCAN", tflite_micro::tflm_signal::Register_PCAN());
473
+ }
474
+
475
+ TfLiteStatus AddPrelu() {
476
+ return AddBuiltin(BuiltinOperator_PRELU, tflite_micro::Register_PRELU(),
477
+ ParsePrelu);
478
+ }
479
+
480
+ TfLiteStatus AddQuantize() {
481
+ return AddBuiltin(BuiltinOperator_QUANTIZE, Register_QUANTIZE(),
482
+ ParseQuantize);
483
+ }
484
+
485
+ TfLiteStatus AddReadVariable() {
486
+ return AddBuiltin(BuiltinOperator_READ_VARIABLE,
487
+ tflite_micro::Register_READ_VARIABLE(), ParseReadVariable);
488
+ }
489
+
490
+ TfLiteStatus AddReduceMax() {
491
+ return AddBuiltin(BuiltinOperator_REDUCE_MAX, Register_REDUCE_MAX(),
492
+ ParseReducer);
493
+ }
494
+
495
+ TfLiteStatus AddRelu() {
496
+ return AddBuiltin(BuiltinOperator_RELU, tflite_micro::Register_RELU(), ParseRelu);
497
+ }
498
+
499
+ TfLiteStatus AddRelu6() {
500
+ return AddBuiltin(BuiltinOperator_RELU6, tflite_micro::Register_RELU6(),
501
+ ParseRelu6);
502
+ }
503
+
504
+ TfLiteStatus AddReshape() {
505
+ return AddBuiltin(BuiltinOperator_RESHAPE, Register_RESHAPE(),
506
+ ParseReshape);
507
+ }
508
+
509
+ TfLiteStatus AddResizeBilinear() {
510
+ return AddBuiltin(BuiltinOperator_RESIZE_BILINEAR,
511
+ Register_RESIZE_BILINEAR(), ParseResizeBilinear);
512
+ }
513
+
514
+ TfLiteStatus AddResizeNearestNeighbor() {
515
+ return AddBuiltin(BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
516
+ Register_RESIZE_NEAREST_NEIGHBOR(),
517
+ ParseResizeNearestNeighbor);
518
+ }
519
+
520
+ TfLiteStatus AddRfft(const TFLMRegistration* registration =
521
+ tflite::tflm_signal::Register_RFFT()) {
522
+ // TODO(b/286250473): change back name and remove namespace
523
+ return AddCustom("SignalRfft", registration);
524
+ }
525
+
526
+ TfLiteStatus AddRound() {
527
+ return AddBuiltin(BuiltinOperator_ROUND, Register_ROUND(), ParseRound);
528
+ }
529
+
530
+ TfLiteStatus AddRsqrt() {
531
+ return AddBuiltin(BuiltinOperator_RSQRT, Register_RSQRT(), ParseRsqrt);
532
+ }
533
+
534
+ TfLiteStatus AddSelectV2() {
535
+ return AddBuiltin(BuiltinOperator_SELECT_V2, Register_SELECT_V2(),
536
+ ParseSelectV2);
537
+ }
538
+
539
+ TfLiteStatus AddShape() {
540
+ return AddBuiltin(BuiltinOperator_SHAPE, Register_SHAPE(), ParseShape);
541
+ }
542
+
543
+ TfLiteStatus AddSin() {
544
+ return AddBuiltin(BuiltinOperator_SIN, Register_SIN(), ParseSin);
545
+ }
546
+
547
+ TfLiteStatus AddSlice() {
548
+ return AddBuiltin(BuiltinOperator_SLICE, Register_SLICE(), ParseSlice);
549
+ }
550
+
551
+ TfLiteStatus AddSoftmax(
552
+ const TFLMRegistration& registration = Register_SOFTMAX()) {
553
+ return AddBuiltin(BuiltinOperator_SOFTMAX, registration, ParseSoftmax);
554
+ }
555
+
556
+ TfLiteStatus AddSpaceToBatchNd() {
557
+ return AddBuiltin(BuiltinOperator_SPACE_TO_BATCH_ND,
558
+ Register_SPACE_TO_BATCH_ND(), ParseSpaceToBatchNd);
559
+ }
560
+
561
+ TfLiteStatus AddSpaceToDepth() {
562
+ return AddBuiltin(BuiltinOperator_SPACE_TO_DEPTH, Register_SPACE_TO_DEPTH(),
563
+ ParseSpaceToDepth);
564
+ }
565
+
566
+ TfLiteStatus AddSplit() {
567
+ return AddBuiltin(BuiltinOperator_SPLIT, Register_SPLIT(), ParseSplit);
568
+ }
569
+
570
+ TfLiteStatus AddSplitV() {
571
+ return AddBuiltin(BuiltinOperator_SPLIT_V, Register_SPLIT_V(), ParseSplitV);
572
+ }
573
+
574
+ TfLiteStatus AddSqueeze() {
575
+ return AddBuiltin(BuiltinOperator_SQUEEZE, Register_SQUEEZE(),
576
+ ParseSqueeze);
577
+ }
578
+
579
+ TfLiteStatus AddSqrt() {
580
+ return AddBuiltin(BuiltinOperator_SQRT, Register_SQRT(), ParseSqrt);
581
+ }
582
+
583
+ TfLiteStatus AddSquare() {
584
+ return AddBuiltin(BuiltinOperator_SQUARE, Register_SQUARE(), ParseSquare);
585
+ }
586
+
587
+ TfLiteStatus AddSquaredDifference() {
588
+ return AddBuiltin(BuiltinOperator_SQUARED_DIFFERENCE,
589
+ tflite_micro::Register_SQUARED_DIFFERENCE(),
590
+ ParseSquaredDifference);
591
+ }
592
+
593
+ TfLiteStatus AddStridedSlice() {
594
+ return AddBuiltin(BuiltinOperator_STRIDED_SLICE, Register_STRIDED_SLICE(),
595
+ ParseStridedSlice);
596
+ }
597
+
598
+ TfLiteStatus AddStacker() {
599
+ // TODO(b/286250473): change back name to "Stacker" and remove namespace
600
+ return AddCustom("SignalStacker", tflite_micro::tflm_signal::Register_STACKER());
601
+ }
602
+
603
+ TfLiteStatus AddSub() {
604
+ return AddBuiltin(BuiltinOperator_SUB, tflite_micro::Register_SUB(), ParseSub);
605
+ }
606
+
607
+ TfLiteStatus AddSum() {
608
+ return AddBuiltin(BuiltinOperator_SUM, Register_SUM(), ParseReducer);
609
+ }
610
+
611
+ TfLiteStatus AddSvdf(const TFLMRegistration& registration = Register_SVDF()) {
612
+ return AddBuiltin(BuiltinOperator_SVDF, registration, ParseSvdf);
613
+ }
614
+
615
+ TfLiteStatus AddTanh() {
616
+ return AddBuiltin(BuiltinOperator_TANH, Register_TANH(), ParseTanh);
617
+ }
618
+
619
+ TfLiteStatus AddTransposeConv() {
620
+ return AddBuiltin(BuiltinOperator_TRANSPOSE_CONV,
621
+ tflite_micro::Register_TRANSPOSE_CONV(), ParseTransposeConv);
622
+ }
623
+
624
+ TfLiteStatus AddTranspose() {
625
+ return AddBuiltin(BuiltinOperator_TRANSPOSE, Register_TRANSPOSE(),
626
+ ParseTranspose);
627
+ }
628
+
629
+ TfLiteStatus AddUnpack() {
630
+ return AddBuiltin(BuiltinOperator_UNPACK, Register_UNPACK(), ParseUnpack);
631
+ }
632
+
633
+ TfLiteStatus AddUnidirectionalSequenceLSTM(
634
+ const TFLMRegistration& registration =
635
+ Register_UNIDIRECTIONAL_SEQUENCE_LSTM()) {
636
+ return AddBuiltin(BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM,
637
+ registration, ParseUnidirectionalSequenceLSTM);
638
+ }
639
+
640
+ TfLiteStatus AddVarHandle() {
641
+ return AddBuiltin(BuiltinOperator_VAR_HANDLE, Register_VAR_HANDLE(),
642
+ ParseVarHandle);
643
+ }
644
+
645
+ TfLiteStatus AddWhile() {
646
+ return AddBuiltin(BuiltinOperator_WHILE, Register_WHILE(), ParseWhile);
647
+ }
648
+
649
+ TfLiteStatus AddWindow() {
650
+ // TODO(b/286250473): change back name to "Window" and remove namespace
651
+ return AddCustom("SignalWindow", tflite_micro::tflm_signal::Register_WINDOW());
652
+ }
653
+
654
+ TfLiteStatus AddZerosLike() {
655
+ return AddBuiltin(BuiltinOperator_ZEROS_LIKE, Register_ZEROS_LIKE(),
656
+ ParseZerosLike);
657
+ }
658
+
659
+ unsigned int GetRegistrationLength() { return registrations_len_; }
660
+
661
+ private:
662
+ TfLiteStatus AddBuiltin(tflite_micro::BuiltinOperator op,
663
+ const TFLMRegistration& registration,
664
+ TfLiteBridgeBuiltinParseFunction parser) {
665
+ if (op == BuiltinOperator_CUSTOM) {
666
+ MicroPrintf("Invalid parameter BuiltinOperator_CUSTOM to the ");
667
+ MicroPrintf("AddBuiltin function.");
668
+ return kTfLiteError;
669
+ }
670
+
671
+ if (FindOp(op) != nullptr) {
672
+ MicroPrintf("Calling AddBuiltin with the same op more than ");
673
+ MicroPrintf("once is not supported (Op: #%d).", op);
674
+ return kTfLiteError;
675
+ }
676
+
677
+ if (registrations_len_ >= tOpCount) {
678
+ MicroPrintf("Couldn't register builtin op #%d, resolver size ", op);
679
+ MicroPrintf("is too small (%d).", tOpCount);
680
+ return kTfLiteError;
681
+ }
682
+
683
+ registrations_[registrations_len_] = registration;
684
+ // Strictly speaking, the builtin_code is not necessary for TFLM but filling
685
+ // it in regardless.
686
+ registrations_[registrations_len_].builtin_code = op;
687
+ registrations_len_++;
688
+
689
+ builtin_codes_[num_buitin_ops_] = op;
690
+ builtin_parsers_[num_buitin_ops_] = parser;
691
+ num_buitin_ops_++;
692
+
693
+ return kTfLiteOk;
694
+ }
695
+
696
+ TFLMRegistration registrations_[tOpCount];
697
+ unsigned int registrations_len_ = 0;
698
+
699
+ // Arrays (and counter) to store the builtin codes and their corresponding
700
+ // parse functions as these are registered with the Op Resolver.
701
+ BuiltinOperator builtin_codes_[tOpCount];
702
+ TfLiteBridgeBuiltinParseFunction builtin_parsers_[tOpCount];
703
+ unsigned int num_buitin_ops_ = 0;
704
+ };
705
+
706
+ }; // namespace tflite_micro
707
+
708
+ #endif // TENSORFLOW_LITE_MICRO_MICRO_MUTABLE_OP_RESOLVER_H_