blob: 6e21e954fbcbc9a5d1c466495b59e6be47308f56 [file] [log] [blame]
Grant Watson64285a12022-11-16 15:32:39 +00001
2// Copyright (c) 2022, ARM Limited.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// THIS FILE IS GENERATED. DO NOT EDIT!
17// See scripts/operator_api/generate_api.py
18
19#ifndef OPERATORS_H_
20#define OPERATORS_H_
21
22#include <stddef.h>
23#include <stdint.h>
24
25#ifdef __cplusplus
26extern "C"
27{
28#endif /* __cplusplus */
29
30 // Note status needs to be aligned with graph_status
31 enum tosa_status_t
32 {
33 tosa_status_valid = 0,
34 tosa_status_unpredictable = 1,
35 tosa_status_error = 2
36 };
37
38 enum tosa_mode_t
39 {
40 tosa_mode_unknown = 0,
41 tosa_mode_nearest = 1,
42 tosa_mode_bilinear = 2,
43 tosa_mode_min = 3,
44 tosa_mode_max = 4
45 };
46
47 enum tosa_datatype_t
48 {
49 tosa_datatype_bf16_t = 0,
50 tosa_datatype_bool_t = 1,
51 tosa_datatype_fp16_t = 2,
52 tosa_datatype_fp32_t = 3,
53 tosa_datatype_int16_t = 4,
54 tosa_datatype_int32_t = 5,
55 tosa_datatype_int48_t = 6,
56 tosa_datatype_int4_t = 7,
57 tosa_datatype_int8_t = 8,
58 tosa_datatype_uint16_t = 9,
59 tosa_datatype_uint8_t = 10,
60 };
61
62 struct tosa_tensor_t
63 {
64 int32_t* shape;
65 int32_t num_dims;
66 tosa_datatype_t data_type;
67 uint8_t* data;
68 size_t size;
69 };
70
71 tosa_status_t tosa_run_argmax(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
72
73 tosa_status_t tosa_run_avg_pool2d(tosa_tensor_t client_input,
74 const int32_t client_kernel[2],
75 const int32_t client_stride[2],
76 const int32_t client_pad[4],
77 const int32_t client_input_zp,
78 const int32_t client_output_zp,
79 tosa_tensor_t client_output);
80
81 tosa_status_t tosa_run_conv2d(tosa_tensor_t client_input,
82 tosa_tensor_t client_weight,
83 tosa_tensor_t client_bias,
84 const int32_t client_pad[4],
85 const int32_t client_stride[2],
86 const int32_t client_dilation[2],
87 const int32_t client_input_zp,
88 const int32_t client_weight_zp,
89 tosa_tensor_t client_output);
90
91 tosa_status_t tosa_run_conv3d(tosa_tensor_t client_input,
92 tosa_tensor_t client_weight,
93 tosa_tensor_t client_bias,
94 const int32_t client_pad[6],
95 const int32_t client_stride[3],
96 const int32_t client_dilation[3],
97 const int32_t client_input_zp,
98 const int32_t client_weight_zp,
99 tosa_tensor_t client_output);
100
101 tosa_status_t tosa_run_depthwise_conv2d(tosa_tensor_t client_input,
102 tosa_tensor_t client_weight,
103 tosa_tensor_t client_bias,
104 const int32_t client_pad[4],
105 const int32_t client_stride[2],
106 const int32_t client_dilation[2],
107 const int32_t client_input_zp,
108 const int32_t client_weight_zp,
109 tosa_tensor_t client_output);
110
111 tosa_status_t tosa_run_fully_connected(tosa_tensor_t client_input,
112 const int32_t client_input_zp,
113 const int32_t client_weight_zp,
114 tosa_tensor_t client_output);
115
116 tosa_status_t tosa_run_matmul(tosa_tensor_t client_a,
117 tosa_tensor_t client_b,
118 const int32_t client_a_zp,
119 const int32_t client_b_zp,
120 tosa_tensor_t client_output);
121
122 tosa_status_t tosa_run_max_pool2d(tosa_tensor_t client_input,
123 const int32_t client_kernel[2],
124 const int32_t client_stride[2],
125 const int32_t client_pad[4],
126 const int32_t client_input_zp,
127 const int32_t client_output_zp,
128 tosa_tensor_t client_output);
129
130 tosa_status_t tosa_run_transpose_conv2d(tosa_tensor_t client_input,
131 tosa_tensor_t client_weight,
132 tosa_tensor_t client_bias,
133 const int32_t client_out_pad[4],
134 const int32_t client_stride[2],
135 const int32_t client_out_shape[4],
136 const int32_t client_input_zp,
137 const int32_t client_weight_zp,
138 const int32_t client_pad_len,
139 const int32_t client_pad[],
140 const int32_t client_dilation_len,
141 const int32_t client_dilation[],
142 tosa_tensor_t client_output);
143
144 tosa_status_t tosa_run_clamp(tosa_tensor_t client_input,
145 const int32_t client_min_int,
146 const int32_t client_max_int,
147 const float client_min_fp,
148 const float client_max_fp,
149 tosa_tensor_t client_output);
150
151 tosa_status_t tosa_run_sigmoid(tosa_tensor_t client_input, tosa_tensor_t client_output);
152
153 tosa_status_t tosa_run_tanh(tosa_tensor_t client_input, tosa_tensor_t client_output);
154
155 tosa_status_t tosa_run_add(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
156
157 tosa_status_t tosa_run_arithmetic_right_shift(tosa_tensor_t client_input1,
158 tosa_tensor_t client_input2,
159 const bool client_round,
160 tosa_tensor_t client_output);
161
162 tosa_status_t
163 tosa_run_bitwise_and(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
164
165 tosa_status_t
166 tosa_run_bitwise_or(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
167
168 tosa_status_t
169 tosa_run_bitwise_xor(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
170
171 tosa_status_t
172 tosa_run_intdiv(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
173
174 tosa_status_t
175 tosa_run_logical_and(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
176
177 tosa_status_t tosa_run_logical_left_shift(tosa_tensor_t client_input1,
178 tosa_tensor_t client_input2,
179 tosa_tensor_t client_output);
180
181 tosa_status_t tosa_run_logical_right_shift(tosa_tensor_t client_input1,
182 tosa_tensor_t client_input2,
183 tosa_tensor_t client_output);
184
185 tosa_status_t
186 tosa_run_logical_or(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
187
188 tosa_status_t
189 tosa_run_logical_xor(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
190
191 tosa_status_t
192 tosa_run_maximum(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
193
194 tosa_status_t
195 tosa_run_minimum(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
196
197 tosa_status_t tosa_run_mul(tosa_tensor_t client_input1,
198 tosa_tensor_t client_input2,
199 const uint8_t client_shift,
200 tosa_tensor_t client_output);
201
202 tosa_status_t tosa_run_pow(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
203
204 tosa_status_t tosa_run_sub(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
205
206 tosa_status_t tosa_run_table(tosa_tensor_t client_input,
207 const int32_t client_table_len,
208 const int16_t client_table[],
209 tosa_tensor_t client_output);
210
211 tosa_status_t tosa_run_abs(tosa_tensor_t client_input1, tosa_tensor_t client_output);
212
213 tosa_status_t tosa_run_bitwise_not(tosa_tensor_t client_input1, tosa_tensor_t client_output);
214
215 tosa_status_t tosa_run_ceil(tosa_tensor_t client_input1, tosa_tensor_t client_output);
216
217 tosa_status_t tosa_run_clz(tosa_tensor_t client_input1, tosa_tensor_t client_output);
218
219 tosa_status_t tosa_run_exp(tosa_tensor_t client_input1, tosa_tensor_t client_output);
220
221 tosa_status_t tosa_run_floor(tosa_tensor_t client_input1, tosa_tensor_t client_output);
222
223 tosa_status_t tosa_run_log(tosa_tensor_t client_input1, tosa_tensor_t client_output);
224
225 tosa_status_t tosa_run_logical_not(tosa_tensor_t client_input1, tosa_tensor_t client_output);
226
227 tosa_status_t tosa_run_negate(tosa_tensor_t client_input1,
228 const int32_t client_input1_zp,
229 const int32_t client_output_zp,
230 tosa_tensor_t client_output);
231
232 tosa_status_t tosa_run_reciprocal(tosa_tensor_t client_input1, tosa_tensor_t client_output);
233
234 tosa_status_t tosa_run_rsqrt(tosa_tensor_t client_input1, tosa_tensor_t client_output);
235
236 tosa_status_t tosa_run_select(tosa_tensor_t client_input1,
237 tosa_tensor_t client_input2,
238 tosa_tensor_t client_input3,
239 tosa_tensor_t client_output);
240
241 tosa_status_t tosa_run_equal(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
242
243 tosa_status_t
244 tosa_run_greater(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
245
246 tosa_status_t
247 tosa_run_greater_equal(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
248
249 tosa_status_t
250 tosa_run_reduce_all(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
251
252 tosa_status_t
253 tosa_run_reduce_any(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
254
255 tosa_status_t
256 tosa_run_reduce_max(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
257
258 tosa_status_t
259 tosa_run_reduce_min(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
260
261 tosa_status_t
262 tosa_run_reduce_product(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
263
264 tosa_status_t
265 tosa_run_reduce_sum(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
266
267 tosa_status_t tosa_run_concat(tosa_tensor_t client_input1, const int32_t client_axis, tosa_tensor_t client_output);
268
269 tosa_status_t tosa_run_pad(tosa_tensor_t client_input1,
270 const int32_t client_padding_len,
271 const int32_t client_padding[],
272 const int32_t client_pad_const_int,
273 const float client_pad_const_fp,
274 tosa_tensor_t client_output);
275
276 tosa_status_t tosa_run_reshape(tosa_tensor_t client_input1,
277 const int32_t client_new_shape_len,
278 const int32_t client_new_shape[],
279 tosa_tensor_t client_output);
280
281 tosa_status_t tosa_run_reverse(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
282
283 tosa_status_t tosa_run_slice(tosa_tensor_t client_input1,
284 const int32_t client_start_len,
285 const int32_t client_start[],
286 const int32_t client_size_len,
287 const int32_t client_size[],
288 tosa_tensor_t client_output);
289
290 tosa_status_t tosa_run_tile(tosa_tensor_t client_input1,
291 const int32_t client_multiplies_len,
292 const int32_t client_multiplies[],
293 const int32_t client_multiples_len,
294 const int32_t client_multiples[],
295 tosa_tensor_t client_output);
296
297 tosa_status_t tosa_run_transpose(tosa_tensor_t client_input1,
298 const int32_t client_perms_len,
299 const int32_t client_perms[],
300 tosa_tensor_t client_output);
301
302 tosa_status_t
303 tosa_run_gather(tosa_tensor_t client_values, tosa_tensor_t client_indices, tosa_tensor_t client_output);
304
305 tosa_status_t tosa_run_scatter(tosa_tensor_t client_values_in,
306 tosa_tensor_t client_indices,
307 tosa_tensor_t client_input,
308 tosa_tensor_t client_values_out);
309
310 tosa_status_t tosa_run_resize(tosa_tensor_t client_input,
311 const int16_t client_scale[4],
312 const int16_t client_offset[2],
313 const int16_t client_border[2],
314 const tosa_mode_t client_mode,
315 tosa_tensor_t client_output);
316
317 tosa_status_t tosa_run_cast(tosa_tensor_t client_input, tosa_tensor_t client_output);
318
319 tosa_status_t tosa_run_rescale(tosa_tensor_t client_input,
320 tosa_tensor_t client_output,
321 const int32_t client_input_zp,
322 const int32_t client_output_zp,
323 const int32_t client_multiplier_len,
324 const int32_t client_multiplier[],
325 const int32_t client_shift_len,
326 const uint8_t client_shift[],
327 const bool client_scale32,
328 const bool client_double_round,
329 const bool client_per_channel);
330
331 tosa_status_t tosa_run_identity(tosa_tensor_t client_input1, tosa_tensor_t client_output);
332
333#ifdef __cplusplus
334}
335#endif /* __cplusplus */
336
337#endif // OPERATORS_H_