shl_ref.h 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206
  1. /*
  2. * Copyright (C) 2016-2022 T-Head Semiconductor Co., Ltd. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the License); you may
  7. * not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  14. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. /* CSI-NN2 version 2.0.x */
  19. #ifndef INCLUDE_SHL_REF_H_
  20. #define INCLUDE_SHL_REF_H_
  21. #include "csi_nn.h"
  22. #include "shl_utils.h"
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. int shl_ref_abs_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  27. struct csinn_siso_params *params);
  28. int shl_ref_abs_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  29. struct csinn_siso_params *params);
  30. int shl_ref_acos_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  31. struct csinn_siso_params *params);
  32. int shl_ref_acos_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  33. struct csinn_siso_params *params);
  34. int shl_ref_acosh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  35. struct csinn_siso_params *params);
  36. int shl_ref_acosh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  37. struct csinn_siso_params *params);
  38. int shl_ref_add_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  39. struct csinn_tensor *output, struct csinn_diso_params *params);
  40. int shl_ref_add_u8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  41. struct csinn_tensor *output, struct csinn_diso_params *params);
  42. int shl_ref_add_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  43. struct csinn_tensor *output, struct csinn_diso_params *params);
  44. int shl_ref_add_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  45. struct csinn_tensor *output, struct csinn_diso_params *params);
  46. int shl_ref_and_u32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  47. struct csinn_tensor *output, struct csinn_diso_params *params);
  48. int shl_ref_and_u8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  49. struct csinn_tensor *output, struct csinn_diso_params *params);
  50. int shl_ref_and_i8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  51. struct csinn_tensor *output, struct csinn_diso_params *params);
  52. int shl_ref_arange_f32(struct csinn_tensor *output, struct csinn_arange_params *params);
  53. int shl_ref_arange_quant(struct csinn_tensor *output, struct csinn_arange_params *params);
  54. int shl_ref_argmax_stride_i32_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  55. struct csinn_reduce_params *params);
  56. int shl_ref_argmax_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  57. struct csinn_reduce_params *params);
  58. int shl_ref_argmin_stride_i32_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  59. struct csinn_reduce_params *params);
  60. int shl_ref_argmin_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  61. struct csinn_reduce_params *params);
  62. int shl_ref_asin_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  63. struct csinn_siso_params *params);
  64. int shl_ref_asin_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  65. struct csinn_siso_params *params);
  66. int shl_ref_asinh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  67. struct csinn_siso_params *params);
  68. int shl_ref_asinh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  69. struct csinn_siso_params *params);
  70. int shl_ref_atan_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  71. struct csinn_siso_params *params);
  72. int shl_ref_atan_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  73. struct csinn_siso_params *params);
  74. int shl_ref_atanh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  75. struct csinn_siso_params *params);
  76. int shl_ref_atanh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  77. struct csinn_siso_params *params);
  78. int shl_ref_avgpool2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  79. struct csinn_pool_params *params);
  80. int shl_ref_avgpool2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  81. struct csinn_pool_params *params);
  82. int shl_ref_avgpool3d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  83. struct csinn_pool_params *params);
  84. int shl_ref_avgpool3d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  85. struct csinn_pool_params *params);
  86. int shl_ref_batch_normalization_f32(struct csinn_tensor *input, struct csinn_tensor *mean,
  87. struct csinn_tensor *variance, struct csinn_tensor *gamma,
  88. struct csinn_tensor *beta, struct csinn_tensor *output,
  89. struct csinn_bn_params *params);
  90. int shl_ref_batch_normalization_quant(struct csinn_tensor *input, struct csinn_tensor *mean,
  91. struct csinn_tensor *variance, struct csinn_tensor *gamma,
  92. struct csinn_tensor *beta, struct csinn_tensor *output,
  93. struct csinn_bn_params *params);
  94. int shl_ref_batch_to_space_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  95. struct csinn_batch_to_space_params *params);
  96. int shl_ref_batch_to_space_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  97. struct csinn_batch_to_space_params *params);
  98. int shl_ref_broadcast_to_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  99. struct csinn_broadcast_to_params *params);
  100. int shl_ref_broadcast_to_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  101. struct csinn_broadcast_to_params *params);
  102. int shl_ref_ceil_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  103. struct csinn_siso_params *params);
  104. int shl_ref_ceil_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  105. struct csinn_siso_params *params);
  106. int shl_ref_clip_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  107. struct csinn_clip_params *params);
  108. int shl_ref_clip_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  109. struct csinn_clip_params *params);
  110. int shl_ref_col2im_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  111. struct csinn_tensor *kernel, struct csinn_col2im_params *params);
  112. int shl_ref_concat_f32(struct csinn_tensor **input, struct csinn_tensor *output,
  113. struct csinn_concat_params *params);
  114. int shl_ref_concat_quant(struct csinn_tensor **input, struct csinn_tensor *output,
  115. struct csinn_concat_params *params);
  116. int shl_ref_conv1d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  117. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  118. struct csinn_conv1d_params *params);
  119. int shl_ref_conv1d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  120. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  121. struct csinn_conv1d_params *params);
  122. int shl_ref_conv2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  123. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  124. struct csinn_conv2d_params *params);
  125. int shl_ref_conv2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  126. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  127. struct csinn_conv2d_params *params);
  128. int shl_ref_conv2d_channel_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  129. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  130. struct csinn_conv2d_params *params);
  131. int shl_ref_conv2d_relu_f32(struct csinn_tensor *o_input, struct csinn_tensor *o_output,
  132. struct csinn_tensor *o_kernel, struct csinn_tensor *o_bias,
  133. struct csinn_conv2d_params *params);
  134. int shl_ref_conv2d_relu_quant(struct csinn_tensor *o_input, struct csinn_tensor *o_output,
  135. struct csinn_tensor *o_kernel, struct csinn_tensor *o_bias,
  136. struct csinn_conv2d_params *params);
  137. int shl_ref_cache_matmul_init(struct csinn_tensor *input, struct csinn_tensor *output,
  138. struct csinn_tensor *weight, struct csinn_tensor *bias,
  139. struct csinn_cache_matmul_params *params);
  140. int shl_ref_cache_matmul_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  141. struct csinn_tensor *weight, struct csinn_tensor *bias,
  142. struct csinn_cache_matmul_params *params);
  143. int shl_ref_cache_matmul_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  144. struct csinn_tensor *weight, struct csinn_tensor *bias,
  145. struct csinn_cache_matmul_params *params);
  146. int shl_ref_cache_conv1d_init(struct csinn_tensor *input, struct csinn_tensor *output,
  147. struct csinn_tensor *weight, struct csinn_tensor *bias,
  148. struct csinn_cache_conv1d_params *params);
  149. int shl_ref_cache_conv1d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  150. struct csinn_tensor *weight, struct csinn_tensor *bias,
  151. struct csinn_cache_conv1d_params *params);
  152. int shl_ref_cache_conv1d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  153. struct csinn_tensor *weight, struct csinn_tensor *bias,
  154. struct csinn_cache_conv1d_params *params);
  155. int shl_ref_conv2d_channel_relu_quant(struct csinn_tensor *o_input, struct csinn_tensor *o_output,
  156. struct csinn_tensor *o_kernel, struct csinn_tensor *o_bias,
  157. struct csinn_conv2d_params *params);
  158. int shl_ref_conv2d_relu6_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  159. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  160. struct csinn_conv2d_params *params);
  161. int shl_ref_conv2d_channel_relu6_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  162. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  163. struct csinn_conv2d_params *params);
  164. int shl_ref_depthwise_conv2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  165. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  166. struct csinn_conv2d_params *params);
  167. int shl_ref_depthwise_conv2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  168. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  169. struct csinn_conv2d_params *params);
  170. int shl_ref_depthwise_conv2d_channel_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  171. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  172. struct csinn_conv2d_params *params);
  173. int shl_ref_depthwise_conv2d_relu_f32(struct csinn_tensor *o_input, struct csinn_tensor *o_output,
  174. struct csinn_tensor *o_kernel, struct csinn_tensor *o_bias,
  175. struct csinn_conv2d_params *params);
  176. int shl_ref_depthwise_conv2d_relu_quant(struct csinn_tensor *o_input, struct csinn_tensor *o_output,
  177. struct csinn_tensor *o_kernel, struct csinn_tensor *o_bias,
  178. struct csinn_conv2d_params *params);
  179. int shl_ref_depthwise_conv2d_channel_relu_quant(struct csinn_tensor *o_input,
  180. struct csinn_tensor *o_output,
  181. struct csinn_tensor *o_kernel,
  182. struct csinn_tensor *o_bias,
  183. struct csinn_conv2d_params *params);
  184. int shl_ref_depthwise_conv2d_relu6_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  185. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  186. struct csinn_conv2d_params *params);
  187. int shl_ref_depthwise_conv2d_channel_relu6_quant(struct csinn_tensor *input,
  188. struct csinn_tensor *output,
  189. struct csinn_tensor *kernel,
  190. struct csinn_tensor *bias,
  191. struct csinn_conv2d_params *params);
  192. int shl_ref_group_conv2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  193. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  194. struct csinn_conv2d_params *params);
  195. int shl_ref_group_conv2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  196. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  197. struct csinn_conv2d_params *params);
  198. int shl_ref_group_conv2d_channel_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  199. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  200. struct csinn_conv2d_params *params);
  201. int shl_ref_group_conv2d_relu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  202. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  203. struct csinn_conv2d_params *params);
  204. int shl_ref_group_conv2d_relu6_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  205. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  206. struct csinn_conv2d_params *params);
  207. int shl_ref_group_conv2d_channel_relu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  208. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  209. struct csinn_conv2d_params *params);
  210. int shl_ref_conv3d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  211. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  212. struct csinn_conv3d_params *params);
  213. int shl_ref_conv3d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  214. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  215. struct csinn_conv3d_params *params);
  216. int shl_ref_cos_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  217. struct csinn_siso_params *params);
  218. int shl_ref_cos_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  219. struct csinn_siso_params *params);
  220. int shl_ref_cosh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  221. struct csinn_siso_params *params);
  222. int shl_ref_cosh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  223. struct csinn_siso_params *params);
  224. int shl_ref_cumprod_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  225. struct csinn_cumprod_params *params);
  226. int shl_ref_cumprod_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  227. struct csinn_cumprod_params *params);
  228. int shl_ref_cumsum_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  229. struct csinn_cumsum_params *params);
  230. int shl_ref_cumsum_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  231. struct csinn_cumsum_params *params);
  232. int shl_ref_data_convert_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  233. struct csinn_siso_params *params);
  234. int shl_ref_data_convert_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  235. struct csinn_siso_params *params);
  236. int shl_ref_deconv2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  237. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  238. struct csinn_conv2d_params *params);
  239. int shl_ref_deconv2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  240. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  241. struct csinn_conv2d_params *params);
  242. int shl_ref_depthwise_deconv2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  243. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  244. struct csinn_conv2d_params *params);
  245. int shl_ref_depthwise_deconv2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  246. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  247. struct csinn_conv2d_params *params);
  248. int shl_ref_deconv3d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  249. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  250. struct csinn_conv3d_params *params);
  251. int shl_ref_deconv3d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  252. struct csinn_tensor *kernel, struct csinn_tensor *bias,
  253. struct csinn_conv3d_params *params);
  254. int shl_ref_depth_to_space_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  255. struct csinn_depth_to_space_params *params);
  256. int shl_ref_depth_to_space_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  257. struct csinn_depth_to_space_params *params);
  258. int shl_ref_div_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  259. struct csinn_tensor *output, struct csinn_diso_params *params);
  260. int shl_ref_div_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  261. struct csinn_tensor *output, struct csinn_diso_params *params);
  262. int shl_ref_elu_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  263. struct csinn_relu_params *params);
  264. int shl_ref_elu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  265. struct csinn_relu_params *params);
  266. int shl_ref_fsmn_f32(struct csinn_tensor *frame, struct csinn_tensor *l_filter,
  267. struct csinn_tensor *r_filter, struct csinn_tensor *frame_sequence,
  268. struct csinn_tensor *frame_counter, struct csinn_tensor *output,
  269. struct csinn_fsmn_params *params);
  270. int shl_ref_fsmn_quant(struct csinn_tensor *frame, struct csinn_tensor *l_filter,
  271. struct csinn_tensor *r_filter, struct csinn_tensor *frame_sequence,
  272. struct csinn_tensor *frame_counter, struct csinn_tensor *output,
  273. struct csinn_fsmn_params *params);
  274. int shl_ref_equal_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  275. struct csinn_tensor *output, struct csinn_diso_params *params);
  276. int shl_ref_equal_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  277. struct csinn_tensor *output, struct csinn_diso_params *params);
  278. int shl_ref_erf_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  279. struct csinn_siso_params *params);
  280. int shl_ref_erf_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  281. struct csinn_siso_params *params);
  282. int shl_ref_exp_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  283. struct csinn_siso_params *params);
  284. int shl_ref_exp_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  285. struct csinn_siso_params *params);
  286. int shl_ref_expand_dims_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  287. struct csinn_expand_dims_params *params);
  288. int shl_ref_expand_dims_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  289. struct csinn_expand_dims_params *params);
  290. int shl_ref_expm1_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  291. struct csinn_siso_params *params);
  292. int shl_ref_expm1_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  293. struct csinn_siso_params *params);
  294. int shl_ref_flatten(struct csinn_tensor *input, struct csinn_tensor *output,
  295. struct csinn_flatten_params *params);
  296. int shl_ref_flatten_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  297. struct csinn_flatten_params *params);
  298. int shl_ref_floor_divide_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  299. struct csinn_tensor *output, struct csinn_diso_params *params);
  300. int shl_ref_floor_divide_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  301. struct csinn_tensor *output, struct csinn_diso_params *params);
  302. int shl_ref_floor_mod_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  303. struct csinn_tensor *output, struct csinn_diso_params *params);
  304. int shl_ref_floor_mod_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  305. struct csinn_tensor *output, struct csinn_diso_params *params);
  306. int shl_ref_floor_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  307. struct csinn_siso_params *params);
  308. int shl_ref_floor_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  309. struct csinn_siso_params *params);
  310. int shl_ref_fullyconnected_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  311. struct csinn_tensor *weights, struct csinn_tensor *bias,
  312. struct csinn_fc_params *params);
  313. int shl_ref_fullyconnected_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  314. struct csinn_tensor *weights, struct csinn_tensor *bias,
  315. struct csinn_fc_params *params);
  316. int shl_ref_gather_nd_f32(struct csinn_tensor *input, struct csinn_tensor *indices,
  317. struct csinn_tensor *output, struct csinn_gather_nd_params *params);
  318. int shl_ref_gather_nd_quant(struct csinn_tensor *input, struct csinn_tensor *indices,
  319. struct csinn_tensor *output, struct csinn_gather_nd_params *params);
  320. int shl_ref_gather_f32(struct csinn_tensor *input, struct csinn_tensor *indices,
  321. struct csinn_tensor *output, struct csinn_gather_params *params);
  322. int shl_ref_gather_quant(struct csinn_tensor *input, struct csinn_tensor *indices,
  323. struct csinn_tensor *output, struct csinn_gather_params *params);
  324. int shl_ref_global_avgpool2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  325. struct csinn_pool_params *params);
  326. int shl_ref_global_avgpool2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  327. struct csinn_pool_params *params);
  328. int shl_ref_global_maxpool2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  329. struct csinn_pool_params *params);
  330. int shl_ref_global_maxpool2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  331. struct csinn_pool_params *params);
  332. int shl_ref_greater_equal_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  333. struct csinn_tensor *output, struct csinn_diso_params *params);
  334. int shl_ref_greater_equal_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  335. struct csinn_tensor *output, struct csinn_diso_params *params);
  336. int shl_ref_greater_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  337. struct csinn_tensor *output, struct csinn_diso_params *params);
  338. int shl_ref_greater_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  339. struct csinn_tensor *output, struct csinn_diso_params *params);
  340. int shl_ref_hard_sigmoid_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  341. struct csinn_sigmoid_params *params);
  342. int shl_ref_hard_sigmoid_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  343. struct csinn_sigmoid_params *params);
  344. int shl_ref_im2col_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  345. struct csinn_im2col_params *params);
  346. int shl_ref_im2col_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  347. struct csinn_im2col_params *params);
  348. int shl_ref_isnan_bool_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  349. struct csinn_siso_params *params);
  350. int shl_ref_l2_normalization_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  351. struct csinn_l2n_params *params);
  352. int shl_ref_l2_normalization_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  353. struct csinn_l2n_params *params);
  354. int shl_ref_l2pool_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  355. struct csinn_pool_params *params);
  356. int shl_ref_layer_norm_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  357. struct csinn_tensor *gamma, struct csinn_tensor *beta,
  358. struct csinn_layer_norm_params *params);
  359. int shl_ref_layer_norm_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  360. struct csinn_tensor *gamma, struct csinn_tensor *beta,
  361. struct csinn_layer_norm_params *params);
  362. int shl_ref_leaky_relu_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  363. struct csinn_relu_params *params);
  364. int shl_ref_leaky_relu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  365. struct csinn_relu_params *params);
  366. int shl_ref_less_equal_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  367. struct csinn_tensor *output, struct csinn_diso_params *params);
  368. int shl_ref_less_equal_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  369. struct csinn_tensor *output, struct csinn_diso_params *params);
  370. int shl_ref_less_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  371. struct csinn_tensor *output, struct csinn_diso_params *params);
  372. int shl_ref_less_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  373. struct csinn_tensor *output, struct csinn_diso_params *params);
  374. int shl_ref_log_softmax_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  375. struct csinn_softmax_params *params);
  376. int shl_ref_log_softmax_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  377. struct csinn_softmax_params *params);
  378. int shl_ref_log_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  379. struct csinn_siso_params *params);
  380. int shl_ref_log_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  381. struct csinn_siso_params *params);
  382. int shl_ref_log1p_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  383. struct csinn_siso_params *params);
  384. int shl_ref_log1p_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  385. struct csinn_siso_params *params);
  386. int shl_ref_logical_and_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  387. struct csinn_tensor *output, struct csinn_diso_params *params);
  388. int shl_ref_logical_and_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  389. struct csinn_tensor *output, struct csinn_diso_params *params);
  390. int shl_ref_logical_not_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  391. struct csinn_siso_params *params);
  392. int shl_ref_logical_not_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  393. struct csinn_siso_params *params);
  394. int shl_ref_logical_or_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  395. struct csinn_tensor *output, struct csinn_diso_params *params);
  396. int shl_ref_logical_or_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  397. struct csinn_tensor *output, struct csinn_diso_params *params);
  398. int shl_ref_logical_xor_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  399. struct csinn_tensor *output, struct csinn_diso_params *params);
  400. int shl_ref_logical_xor_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  401. struct csinn_tensor *output, struct csinn_diso_params *params);
  402. int shl_ref_lrn_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  403. struct csinn_lrn_params *params);
  404. int shl_ref_lrn_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  405. struct csinn_lrn_params *params);
  406. int shl_ref_matmul_f32(struct csinn_tensor *mat0, struct csinn_tensor *mat1,
  407. struct csinn_tensor *output, struct csinn_matmul_params *params);
  408. int shl_ref_matmul_quant(struct csinn_tensor *mat0, struct csinn_tensor *mat1,
  409. struct csinn_tensor *output, struct csinn_matmul_params *params);
  410. int shl_ref_max_stride_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  411. struct csinn_reduce_params *params);
  412. int shl_ref_max_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  413. struct csinn_reduce_params *params);
  414. int shl_ref_maximum_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  415. struct csinn_tensor *output, struct csinn_diso_params *params);
  416. int shl_ref_maximum_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  417. struct csinn_tensor *output, struct csinn_diso_params *params);
  418. int shl_ref_maxpool2d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  419. struct csinn_pool_params *params);
  420. int shl_ref_maxpool2d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  421. struct csinn_pool_params *params);
  422. int shl_ref_maxpool2d_locat_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  423. struct csinn_pool_params *params);
  424. int shl_ref_maxpool2d_locat_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  425. struct csinn_pool_params *params);
  426. int shl_ref_maxpool3d_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  427. struct csinn_pool_params *params);
  428. int shl_ref_maxpool3d_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  429. struct csinn_pool_params *params);
  430. int shl_ref_mean_stride_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  431. struct csinn_reduce_params *params);
  432. int shl_ref_mean_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  433. struct csinn_reduce_params *params);
  434. int shl_ref_mean_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  435. struct csinn_reduce_params *params);
  436. int shl_ref_min_stride_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  437. struct csinn_reduce_params *params);
  438. int shl_ref_min_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  439. struct csinn_reduce_params *params);
  440. int shl_ref_minimum_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  441. struct csinn_tensor *output, struct csinn_diso_params *params);
  442. int shl_ref_minimum_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  443. struct csinn_tensor *output, struct csinn_diso_params *params);
  444. int shl_ref_mod_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  445. struct csinn_tensor *output, struct csinn_diso_params *params);
  446. int shl_ref_mod_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  447. struct csinn_tensor *output, struct csinn_diso_params *params);
  448. int shl_ref_mul_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  449. struct csinn_tensor *output, struct csinn_diso_params *params);
  450. int shl_ref_mul_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  451. struct csinn_tensor *output, struct csinn_diso_params *params);
  452. int shl_ref_ndarray_size_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  453. struct csinn_ndarray_size_params *params);
  454. int shl_ref_ndarray_size_u8(struct csinn_tensor *input, struct csinn_tensor *output,
  455. struct csinn_ndarray_size_params *params);
  456. int shl_ref_ndarray_size_i8(struct csinn_tensor *input, struct csinn_tensor *output,
  457. struct csinn_ndarray_size_params *params);
  458. int shl_ref_ndarray_size_i32(struct csinn_tensor *input, struct csinn_tensor *output,
  459. struct csinn_ndarray_size_params *params);
  460. int shl_ref_negative_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  461. struct csinn_siso_params *params);
  462. int shl_ref_negative_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  463. struct csinn_siso_params *params);
  464. int shl_ref_non_max_suppression_std(struct csinn_tensor *input0, struct csinn_tensor *input1,
  465. struct csinn_tensor *output,
  466. struct csinn_non_max_suppression_params *params);
  467. int shl_ref_not_equal_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  468. struct csinn_tensor *output, struct csinn_diso_params *params);
  469. int shl_ref_not_equal_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  470. struct csinn_tensor *output, struct csinn_diso_params *params);
  471. int shl_ref_not_u32(struct csinn_tensor *input, struct csinn_tensor *output,
  472. struct csinn_siso_params *params);
  473. int shl_ref_not_u8(struct csinn_tensor *input, struct csinn_tensor *output,
  474. struct csinn_siso_params *params);
  475. int shl_ref_not_i8(struct csinn_tensor *input, struct csinn_tensor *output,
  476. struct csinn_siso_params *params);
  477. int shl_ref_or_u32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  478. struct csinn_tensor *output, struct csinn_diso_params *params);
  479. int shl_ref_or_u8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  480. struct csinn_tensor *output, struct csinn_diso_params *params);
  481. int shl_ref_or_i8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  482. struct csinn_tensor *output, struct csinn_diso_params *params);
  483. int shl_ref_pad_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  484. struct csinn_pad_params *params);
  485. int shl_ref_pad_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  486. struct csinn_pad_params *params);
  487. int shl_ref_power_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  488. struct csinn_tensor *output, struct csinn_diso_params *params);
  489. int shl_ref_power_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  490. struct csinn_tensor *output, struct csinn_diso_params *params);
  491. int shl_ref_prelu_f32(struct csinn_tensor *input, struct csinn_tensor *alpha,
  492. struct csinn_tensor *output, struct csinn_prelu_params *params);
  493. int shl_ref_prelu_quant(struct csinn_tensor *input, struct csinn_tensor *alpha,
  494. struct csinn_tensor *output, struct csinn_prelu_params *params);
  495. int shl_ref_prod_stride_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  496. struct csinn_reduce_params *params);
  497. int shl_ref_prod_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  498. struct csinn_reduce_params *params);
  499. int shl_ref_proposal_f32(struct csinn_tensor *cls_prob, struct csinn_tensor *bbox_pred,
  500. struct csinn_tensor *im_info, struct csinn_tensor *output,
  501. struct csinn_proposal_params *params);
  502. int shl_ref_proposal_quant(struct csinn_tensor *cls_prob, struct csinn_tensor *bbox_pred,
  503. struct csinn_tensor *im_info, struct csinn_tensor *output,
  504. struct csinn_proposal_params *params);
  505. int shl_ref_psroipooling_f32(struct csinn_tensor *data, struct csinn_tensor *rois,
  506. struct csinn_tensor *output, struct csinn_psroipooling_params *params);
  507. int shl_ref_psroipooling_quant(struct csinn_tensor *data, struct csinn_tensor *rois,
  508. struct csinn_tensor *output,
  509. struct csinn_psroipooling_params *params);
  510. int shl_ref_reduce_logsumexp_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  511. struct csinn_reduce_params *params);
  512. int shl_ref_reduce_logsumexp_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  513. struct csinn_reduce_params *params);
  514. int shl_ref_reduce_max_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  515. struct csinn_reduce_params *params);
  516. int shl_ref_reduce_max_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  517. struct csinn_reduce_params *params);
  518. int shl_ref_reduce_mean_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  519. struct csinn_reduce_params *params);
  520. int shl_ref_reduce_mean_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  521. struct csinn_reduce_params *params);
  522. int shl_ref_reduce_min_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  523. struct csinn_reduce_params *params);
  524. int shl_ref_reduce_min_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  525. struct csinn_reduce_params *params);
  526. int shl_ref_reduce_prod_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  527. struct csinn_reduce_params *params);
  528. int shl_ref_reduce_prod_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  529. struct csinn_reduce_params *params);
  530. int shl_ref_reduce_sum_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  531. struct csinn_reduce_params *params);
  532. int shl_ref_reduce_sum_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  533. struct csinn_reduce_params *params);
  534. int shl_ref_relu_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  535. struct csinn_relu_params *params);
  536. int shl_ref_relu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  537. struct csinn_relu_params *params);
  538. int shl_ref_relu1_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  539. struct csinn_relu_params *params);
  540. int shl_ref_relu1_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  541. struct csinn_relu_params *params);
  542. int shl_ref_relu6_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  543. struct csinn_relu_params *params);
  544. int shl_ref_relu6_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  545. struct csinn_relu_params *params);
  546. int shl_ref_relun_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  547. struct csinn_relu_params *params);
  548. int shl_ref_relun_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  549. struct csinn_relu_params *params);
  550. int shl_ref_reshape(struct csinn_tensor *input, struct csinn_tensor *output,
  551. struct csinn_reshape_params *params);
  552. int shl_ref_reshape_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  553. struct csinn_reshape_params *params);
  554. int shl_ref_resize_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  555. struct csinn_resize_params *params);
  556. int shl_ref_resize_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  557. struct csinn_resize_params *params);
  558. int shl_ref_reverse_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  559. struct csinn_reverse_params *params);
  560. int shl_ref_reverse_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  561. struct csinn_reverse_params *params);
  562. int shl_ref_roi_align_f32(struct csinn_tensor *data, struct csinn_tensor *rois,
  563. struct csinn_tensor *output, struct csinn_roi_align_params *params);
  564. int shl_ref_roipool_f32(struct csinn_tensor *data, struct csinn_tensor *rois,
  565. struct csinn_tensor *output, struct csinn_roi_pool_params *params);
  566. int shl_ref_roipool_quant(struct csinn_tensor *data, struct csinn_tensor *rois,
  567. struct csinn_tensor *output, struct csinn_roi_pool_params *params);
  568. int shl_ref_round_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  569. struct csinn_siso_params *params);
  570. int shl_ref_round_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  571. struct csinn_siso_params *params);
  572. int shl_ref_rsqrt_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  573. struct csinn_siso_params *params);
  574. int shl_ref_rsqrt_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  575. struct csinn_siso_params *params);
  576. int shl_ref_scatter_nd_f32(struct csinn_tensor *input, struct csinn_tensor *indices,
  577. struct csinn_tensor *updates, struct csinn_tensor *output,
  578. struct csinn_scatter_nd_params *params);
  579. int shl_ref_scatter_nd_quant(struct csinn_tensor *input, struct csinn_tensor *indices,
  580. struct csinn_tensor *updates, struct csinn_tensor *output,
  581. struct csinn_scatter_nd_params *params);
  582. int shl_ref_unsorted_segment_max_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  583. struct csinn_tensor *output,
  584. struct csinn_segment_params *params);
  585. int shl_ref_segment_max_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  586. struct csinn_tensor *output, struct csinn_segment_params *params);
  587. int shl_ref_unsorted_segment_max_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  588. struct csinn_tensor *output,
  589. struct csinn_segment_params *params);
  590. int shl_ref_segment_max_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  591. struct csinn_tensor *output, struct csinn_segment_params *params);
  592. int shl_ref_unsorted_segment_mean_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  593. struct csinn_tensor *output,
  594. struct csinn_segment_params *params);
  595. int shl_ref_segment_mean_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  596. struct csinn_tensor *output, struct csinn_segment_params *params);
  597. int shl_ref_unsorted_segment_mean_quant(struct csinn_tensor *input,
  598. struct csinn_tensor *segment_ids,
  599. struct csinn_tensor *output,
  600. struct csinn_segment_params *params);
  601. int shl_ref_segment_mean_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  602. struct csinn_tensor *output, struct csinn_segment_params *params);
  603. int shl_ref_unsorted_segment_min_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  604. struct csinn_tensor *output,
  605. struct csinn_segment_params *params);
  606. int shl_ref_segment_min_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  607. struct csinn_tensor *output, struct csinn_segment_params *params);
  608. int shl_ref_unsorted_segment_min_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  609. struct csinn_tensor *output,
  610. struct csinn_segment_params *params);
  611. int shl_ref_segment_min_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  612. struct csinn_tensor *output, struct csinn_segment_params *params);
  613. int shl_ref_unsorted_segment_prod_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  614. struct csinn_tensor *output,
  615. struct csinn_segment_params *params);
  616. int shl_ref_segment_prod_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  617. struct csinn_tensor *output, struct csinn_segment_params *params);
  618. int shl_ref_unsorted_segment_prod_quant(struct csinn_tensor *input,
  619. struct csinn_tensor *segment_ids,
  620. struct csinn_tensor *output,
  621. struct csinn_segment_params *params);
  622. int shl_ref_segment_prod_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  623. struct csinn_tensor *output, struct csinn_segment_params *params);
  624. int shl_ref_unsorted_segment_sum_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  625. struct csinn_tensor *output,
  626. struct csinn_segment_params *params);
  627. int shl_ref_segment_sum_f32(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  628. struct csinn_tensor *output, struct csinn_segment_params *params);
  629. int shl_ref_unsorted_segment_sum_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  630. struct csinn_tensor *output,
  631. struct csinn_segment_params *params);
  632. int shl_ref_segment_sum_quant(struct csinn_tensor *input, struct csinn_tensor *segment_ids,
  633. struct csinn_tensor *output, struct csinn_segment_params *params);
  634. int shl_ref_select_f32(struct csinn_tensor *condition, struct csinn_tensor *input0,
  635. struct csinn_tensor *input1, struct csinn_tensor *output,
  636. struct csinn_select_params *params);
  637. int shl_ref_select_u8(struct csinn_tensor *condition, struct csinn_tensor *input0,
  638. struct csinn_tensor *input1, struct csinn_tensor *output,
  639. struct csinn_select_params *params);
  640. int shl_ref_select_i8(struct csinn_tensor *condition, struct csinn_tensor *input0,
  641. struct csinn_tensor *input1, struct csinn_tensor *output,
  642. struct csinn_select_params *params);
  643. int shl_ref_shape_i32(struct csinn_tensor *input, struct csinn_tensor *output,
  644. struct csinn_shape_params *params);
  645. int shl_ref_shape_u8(struct csinn_tensor *input, struct csinn_tensor *output,
  646. struct csinn_shape_params *params);
  647. int shl_ref_shape_i8(struct csinn_tensor *input, struct csinn_tensor *output,
  648. struct csinn_shape_params *params);
  649. int shl_ref_shuffle_channel_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  650. struct csinn_shuffle_channel_params *params);
  651. int shl_ref_shuffle_channel_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  652. struct csinn_shuffle_channel_params *params);
  653. int shl_ref_sigmoid_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  654. struct csinn_sigmoid_params *params);
  655. int shl_ref_sigmoid_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  656. struct csinn_sigmoid_params *params);
  657. int shl_ref_sign_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  658. struct csinn_siso_params *params);
  659. int shl_ref_sign_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  660. struct csinn_siso_params *params);
  661. int shl_ref_sin_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  662. struct csinn_siso_params *params);
  663. int shl_ref_sin_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  664. struct csinn_siso_params *params);
  665. int shl_ref_sinh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  666. struct csinn_siso_params *params);
  667. int shl_ref_sinh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  668. struct csinn_siso_params *params);
  669. int shl_ref_slice_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  670. struct csinn_slice_params *params);
  671. int shl_ref_slice_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  672. struct csinn_slice_params *params);
  673. int shl_ref_softmax_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  674. struct csinn_softmax_params *params);
  675. int shl_ref_softmax_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  676. struct csinn_softmax_params *params);
  677. int shl_ref_softplus_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  678. struct csinn_siso_params *params);
  679. int shl_ref_softplus_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  680. struct csinn_siso_params *params);
  681. int shl_ref_softrelu_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  682. struct csinn_relu_params *params);
  683. int shl_ref_softrelu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  684. struct csinn_relu_params *params);
  685. int shl_ref_softsign_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  686. struct csinn_siso_params *params);
  687. int shl_ref_softsign_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  688. struct csinn_siso_params *params);
  689. int shl_ref_space_to_batch_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  690. struct csinn_space_to_batch_params *params);
  691. int shl_ref_space_to_batch_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  692. struct csinn_space_to_batch_params *params);
  693. int shl_ref_space_to_depth_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  694. struct csinn_space_to_depth_params *params);
  695. int shl_ref_space_to_depth_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  696. struct csinn_space_to_depth_params *params);
  697. int shl_ref_split_f32(struct csinn_tensor *input, struct csinn_tensor **output,
  698. struct csinn_split_params *params);
  699. int shl_ref_split_quant(struct csinn_tensor *input, struct csinn_tensor **output,
  700. struct csinn_split_params *params);
  701. int shl_ref_sqrt_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  702. struct csinn_siso_params *params);
  703. int shl_ref_sqrt_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  704. struct csinn_siso_params *params);
  705. int shl_ref_square_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  706. struct csinn_siso_params *params);
  707. int shl_ref_squeeze(struct csinn_tensor *input, struct csinn_tensor *output,
  708. struct csinn_squeeze_params *params);
  709. int shl_ref_stack_f32(struct csinn_tensor **input, struct csinn_tensor *output,
  710. struct csinn_stack_params *params);
  711. int shl_ref_stack_quant(struct csinn_tensor **input, struct csinn_tensor *output,
  712. struct csinn_stack_params *params);
  713. int shl_ref_strided_slice_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  714. struct csinn_strided_slice_params *params);
  715. int shl_ref_strided_slice_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  716. struct csinn_strided_slice_params *params);
  717. int shl_ref_sub_f32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  718. struct csinn_tensor *output, struct csinn_diso_params *params);
  719. int shl_ref_sub_quant(struct csinn_tensor *input0, struct csinn_tensor *input1,
  720. struct csinn_tensor *output, struct csinn_diso_params *params);
  721. int shl_ref_sum_stride_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  722. struct csinn_reduce_params *params);
  723. int shl_ref_sum_stride_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  724. struct csinn_reduce_params *params);
  725. int shl_ref_tan_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  726. struct csinn_siso_params *params);
  727. int shl_ref_tan_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  728. struct csinn_siso_params *params);
  729. int shl_ref_tanh_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  730. struct csinn_siso_params *params);
  731. int shl_ref_tanh_f64(struct csinn_tensor *input, struct csinn_tensor *output,
  732. struct csinn_siso_params *params);
  733. int shl_ref_tanh_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  734. struct csinn_siso_params *params);
  735. int shl_ref_threshold_relu_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  736. struct csinn_relu_params *params);
  737. int shl_ref_threshold_relu_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  738. struct csinn_relu_params *params);
  739. int shl_ref_tile_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  740. struct csinn_tile_params *params);
  741. int shl_ref_tile_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  742. struct csinn_tile_params *params);
  743. int shl_ref_topk_f32(struct csinn_tensor *input, struct csinn_tensor *output1,
  744. struct csinn_tensor *output2, struct csinn_topk_params *params);
  745. int shl_ref_topk_quant(struct csinn_tensor *input, struct csinn_tensor *output1,
  746. struct csinn_tensor *output2, struct csinn_topk_params *params);
  747. int shl_ref_transpose(struct csinn_tensor *input, struct csinn_tensor *output,
  748. struct csinn_transpose_params *params);
  749. int shl_ref_transpose_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  750. struct csinn_transpose_params *params);
  751. int shl_ref_trunc_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  752. struct csinn_siso_params *params);
  753. int shl_ref_trunc_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  754. struct csinn_siso_params *params);
  755. int shl_ref_unpooling_f32(struct csinn_tensor *input, struct csinn_tensor *mask,
  756. struct csinn_tensor *output, struct csinn_unpooling_params *params);
  757. int shl_ref_unpooling_quant(struct csinn_tensor *input, struct csinn_tensor *mask,
  758. struct csinn_tensor *output, struct csinn_unpooling_params *params);
  759. int shl_ref_unstack_f32(struct csinn_tensor *input, struct csinn_tensor **output,
  760. struct csinn_unstack_params *params);
  761. int shl_ref_unstack_qunat(struct csinn_tensor *input, struct csinn_tensor **output,
  762. struct csinn_unstack_params *params);
  763. int shl_ref_xor_u32(struct csinn_tensor *input0, struct csinn_tensor *input1,
  764. struct csinn_tensor *output, struct csinn_diso_params *params);
  765. int shl_ref_xor_u8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  766. struct csinn_tensor *output, struct csinn_diso_params *params);
  767. int shl_ref_xor_i8(struct csinn_tensor *input0, struct csinn_tensor *input1,
  768. struct csinn_tensor *output, struct csinn_diso_params *params);
  769. int shl_ref_yuv_rgb_scale_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  770. struct csinn_siso_params *params);
  771. int shl_ref_yuv_rgb_scale_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  772. struct csinn_siso_params *params);
  773. int32_t shl_ref_max_internal_s32(int32_t a, int32_t b);
  774. int32_t shl_ref_min_internal_s32(int32_t a, int32_t b);
  775. int32_t shl_ref_get_index(int32_t *dim, int32_t index0, int32_t index1, int32_t index2,
  776. int32_t index3);
  777. int32_t shl_ref_get_index_5(int32_t *dim, int32_t index0, int32_t index1, int32_t index2,
  778. int32_t index3, int32_t index4);
  779. int32_t shl_ref_get_index_iter(int32_t *dim, int dim_count, int32_t *index);
  780. float shl_ref_get_scale(int32_t multiplier, int32_t shift);
  781. float shl_ref_dequantize_u8_to_f32(uint8_t input, struct csinn_quant_info *qinfo);
  782. float shl_ref_dequantize_i8_to_f32(int8_t input, struct csinn_quant_info *qinfo);
  783. uint8_t shl_ref_quantize_f32_to_u8(float input, struct csinn_quant_info *qinfo);
  784. int8_t shl_ref_quantize_f32_to_i8(float input, struct csinn_quant_info *qinfo);
  785. uint8_t shl_ref_quantize_channel_u8(int32_t data, struct csinn_tensor *input,
  786. struct csinn_tensor *output, float wscale);
  787. int8_t shl_ref_quantize_channel_i8(int32_t data, struct csinn_tensor *input,
  788. struct csinn_tensor *output, float wscale);
  789. float shl_ref_uint8_to_float(uint8_t i, struct csinn_tensor *t);
  790. float shl_ref_int8_to_float(int8_t i, struct csinn_tensor *t);
  791. int16_t shl_ref_float32_to_float16(float value);
  792. float shl_ref_float16_to_float32(int16_t value);
  793. int16_t shl_ref_float32_to_bfloat16(float value);
  794. float shl_ref_bfloat16_to_float32(int16_t value);
  795. struct csinn_tensor *shl_ref_nchw_to_nhwc_8(struct csinn_tensor *t);
  796. void shl_ref_nhwc_to_nchw_8(struct csinn_tensor *nt, struct csinn_tensor *t);
  797. struct csinn_tensor *shl_ref_deconv_kernel_nchw_to_nhwc_f32(struct csinn_tensor *t,
  798. int32_t permute[4]);
  799. struct csinn_tensor *shl_ref_nchw_to_nhwc_f32(struct csinn_tensor *t);
  800. void shl_ref_nhwc_to_nchw_f32(struct csinn_tensor *nt, struct csinn_tensor *t);
  801. int32_t shl_ref_get_reduction_index(int32_t k, const int32_t *strides, const int32_t *extents,
  802. int32_t n);
  803. struct csinn_tensor *shl_ref_alloc_float_tensor(struct csinn_tensor *src);
  804. void shl_ref_free_float_tensor(struct csinn_tensor *src);
  805. struct csinn_tensor *shl_ref_convert_float_tensor(struct csinn_tensor *src);
  806. void shl_ref_conv_free_float_tensor(struct csinn_tensor *input, struct csinn_tensor *output,
  807. struct csinn_tensor *kernel, struct csinn_tensor *bias);
  808. struct csinn_tensor *shl_ref_tensor_transform_f32(struct csinn_tensor *input);
  809. int shl_ref_tensor_transform_free_f32(struct csinn_tensor *input);
  810. uint8_t *shl_ref_f32_to_input_dtype(uint32_t index, float *data, struct csinn_session *sess);
  811. struct shl_ref_diso_callback {
  812. void (*bc)();
  813. struct csinn_tensor *input0;
  814. struct csinn_tensor *input1;
  815. struct csinn_tensor *output;
  816. int32_t *input_dim;
  817. };
  818. int shl_ref_diso_broadcast_base(struct csinn_tensor *input0, struct csinn_tensor *input1,
  819. struct csinn_tensor *output, struct csinn_diso_params *params,
  820. struct shl_ref_diso_callback *cb);
  821. int shl_ref_broadcast_to_shape(struct csinn_tensor *input, struct csinn_tensor *output,
  822. int32_t *shape, int32_t shape_count);
  823. int shl_ref_broadcast_to_shape_f32(struct csinn_tensor *input, struct csinn_tensor *output,
  824. int32_t *shape, int32_t shape_count);
  825. int shl_ref_broadcast_to_shape_quant(struct csinn_tensor *input, struct csinn_tensor *output,
  826. int32_t *shape, int32_t shape_count);
  827. int shl_ref_siso_callback_base(struct csinn_tensor *input, struct csinn_tensor *output,
  828. void *params, void *cb);
  829. int shl_ref_diso_callback_base(struct csinn_tensor *input0, struct csinn_tensor *input1,
  830. struct csinn_tensor *output, void *params, void *cb);
  831. int shl_ref_conv_callback_base(struct csinn_tensor *input, struct csinn_tensor *output,
  832. struct csinn_tensor *kernel, struct csinn_tensor *bias, void *params,
  833. void *cb);
  834. void shl_ref_nn_init(struct csinn_tensor *input, struct csinn_tensor *output);
  835. void shl_ref_nn_deinit(struct csinn_tensor *input, struct csinn_tensor *output);
  836. int shl_ref_flatten_init(struct csinn_tensor *input, struct csinn_tensor *output,
  837. struct csinn_reshape_params *params);
  838. int shl_ref_reshape_init(struct csinn_tensor *input, struct csinn_tensor *output,
  839. struct csinn_reshape_params *params);
  840. int shl_ref_transpose_init(struct csinn_tensor *input, struct csinn_tensor *output,
  841. struct csinn_transpose_params *params);
  842. void asr_buffer_init(struct csinn_asr_buffer_t *buffer, size_t buffer_size, size_t data_lenth);
  843. void *asr_buffer_insert_front(struct csinn_asr_buffer_t *buffer, void *input, size_t len);
  844. void *asr_buffer_insert_back(struct csinn_asr_buffer_t *buffer, void *input, size_t len);
  845. void *asr_buffer_get_buffer(struct csinn_asr_buffer_t *buffer);
  846. void asr_buffer_reset(struct csinn_asr_buffer_t *buffer);
  847. #ifdef __cplusplus
  848. }
  849. #endif
  850. #endif // INCLUDE_SHL_REF_H_