blob: bc863546df2d78bb61ade1f978431a41470a9d9c [file] [log] [blame]
Eric Kunze58098a72022-08-05 15:40:12 -07001<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE tosa SYSTEM "tosa.dtd">
3<tosa>
4 <profiles>
5 <profile name="BI">Base Inference</profile>
6 <profile name="MI">Main Inference</profile>
7 <profile name="MT">Main Training</profile>
8 </profiles>
9 <operators>
10 <operatorgroup name="tensor">
11 <operator>
12 <name>ARGMAX</name>
13 <arguments>
14 <argument category="input" name="input" type="in_t*" shape="shape1">
15 <description>Input tensor with rank from 1 to 4</description>
16 </argument>
17 <argument category="attribute" name="axis" type="int32_t" shape="-">
18 <description>Axis in range from 0 to rank(shape1)-1</description>
19 </argument>
20 <argument category="output" name="output" type="out_t*" shape="shape">
21 <description>Output tensor, with rank = rank(shape1)-1</description>
22 </argument>
23 </arguments>
24 <types>
25 <type name='in_t' />
26 <type name='out_t' />
27 </types>
28 <typesupport mode="signed 8" in_t="int8_t" out_t="int32_t"/>
29 <typesupport mode="signed 16" in_t="int16_t" out_t="int32_t" />
30 <typesupport mode="fp16" in_t="fp16_t" out_t="int32_t">
31 <profile name="MI"/>
32 <profile name="MT"/>
33 </typesupport>
34 <typesupport mode="bf16" in_t="bf16_t" out_t="int32_t">
35 <profile name="MI"/>
36 <profile name="MT"/>
37 </typesupport>
38 <typesupport mode="fp32" in_t="fp32_t" out_t="int32_t">
39 <profile name="MI"/>
40 <profile name="MT"/>
41 </typesupport>
42 </operator>
43 <operator>
44 <name>AVG_POOL2D</name>
45 <arguments>
46 <argument category="input" name="input" type="in_out_t*" shape="[N,IH,IW,C]">
47 <description>Input tensor 4D</description>
48 </argument>
49 <argument category="attribute" name="kernel" type="int32_t*" shape="[2]">
50 <description>[kernel_y, kernel_x]</description>
51 </argument>
52 <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
53 <description>[stride_y, stride_x]</description>
54 </argument>
55 <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
56 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
57 </argument>
58 <argument category="attribute" name="input_zp" type="in_out_t" shape="-">
59 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
60 </argument>
61 <argument category="attribute" name="output_zp" type="in_out_t" shape="-">
62 <description>Output tensor zero point. Must be zero for non-int8 types.</description>
63 </argument>
64 <argument category="output" name="output" type="in_out_t*" shape="[N,OH,OW,C]">
65 <description>Output tensor 4D</description>
66 </argument>
67 </arguments>
68 <types>
69 <type name='in_out_t' />
70 <type name='acc_t' />
71 </types>
72 <typesupport mode="signed 8 with int32 accumulate" in_out_t="int8_t" acc_t="int32_t" />
73 <typesupport mode="signed 16 with int32 accumulate" in_out_t="int16_t" acc_t="int32_t" />
74 <typesupport mode="fp16 with fp16 accumulate" in_out_t="fp16_t" acc_t="fp16_t">
75 <profile name="MI"/>
76 <profile name="MT"/>
77 </typesupport>
78 <typesupport mode="fp16 with fp32 accumulate" in_out_t="fp16_t" acc_t="fp32_t">
79 <profile name="MI"/>
80 <profile name="MT"/>
81 </typesupport>
82 <typesupport mode="bf16 with fp32 accumulate" in_out_t="bf16_t" acc_t="fp32_t">
83 <profile name="MI"/>
84 <profile name="MT"/>
85 </typesupport>
86 <typesupport mode="fp32 with fp32 accumulate" in_out_t="fp32_t" acc_t="fp32_t">
87 <profile name="MI"/>
88 <profile name="MT"/>
89 </typesupport>
90 </operator>
91 <operator>
92 <name>CONV2D</name>
93 <arguments>
94 <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,IC]">
95 <description>Input tensor</description>
96 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -070097 <argument category="input" name="weight" type="weight_t*" shape="[OC,KH,KW,IC]">
Eric Kunze58098a72022-08-05 15:40:12 -070098 <description>Weight kernel size KH x KW</description>
99 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700100 <argument category="input" name="bias" type="out_t*" shape="[OC]">
Eric Kunze58098a72022-08-05 15:40:12 -0700101 <description>Per output channel bias data.</description>
102 </argument>
103 <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
104 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
105 </argument>
106 <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
107 <description>[stride_y, stride_x]</description>
108 </argument>
109 <argument category="attribute" name="dilation" type="int32_t*" shape="[2]">
110 <description>[dilation_y, dilation_x]</description>
111 </argument>
112 <argument category="attribute" name="input_zp" type="in_t" shape="-">
113 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
114 </argument>
115 <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
116 <description>Weight zero point. Must be zero for non-int8 types.</description>
117 </argument>
118 <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,OC]">
119 <description>Output tensor</description>
120 </argument>
121 </arguments>
122 <types>
123 <type name='in_t' />
124 <type name='weight_t' />
125 <type name='out_t' />
126 </types>
127 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
128 <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
129 <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
130 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
131 <profile name="MI"/>
132 <profile name="MT"/>
133 </typesupport>
134 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
135 <profile name="MI"/>
136 <profile name="MT"/>
137 </typesupport>
138 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
139 <profile name="MI"/>
140 <profile name="MT"/>
141 </typesupport>
142 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
143 <profile name="MI"/>
144 <profile name="MT"/>
145 </typesupport>
146 </operator>
147 <operator>
148 <name>CONV3D</name>
149 <arguments>
150 <argument category="input" name="input" type="in_t*" shape="[N,ID,IH,IW,IC]">
151 <description>Input tensor</description>
152 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700153 <argument category="input" name="weight" type="weight_t*" shape="[OC,KD,KH,KW,IC]">
Eric Kunze58098a72022-08-05 15:40:12 -0700154 <description>Weight kernel size KDxKHxKW</description>
155 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700156 <argument category="input" name="bias" type="out_t*" shape="[OC]">
Eric Kunze58098a72022-08-05 15:40:12 -0700157 <description>Per output channel bias data.</description>
158 </argument>
159 <argument category="attribute" name="pad" type="int32_t*" shape="[6]">
160 <description>[pad_d0, pad_d1, pad_top, pad_bottom, pad_left, pad_right]</description>
161 </argument>
162 <argument category="attribute" name="stride" type="int32_t*" shape="[3]">
163 <description>[stride_d, stride_y, stride_x]</description>
164 </argument>
165 <argument category="attribute" name="dilation" type="int32_t*" shape="[3]">
166 <description>[dilation_d, dilation_y, dilation_x]</description>
167 </argument>
168 <argument category="attribute" name="input_zp" type="in_t" shape="-">
169 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
170 </argument>
171 <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
172 <description>Weight zero point. Must be zero for non-int8 types.</description>
173 </argument>
174 <argument category="output" name="output" type="out_t*" shape="[N,OD,OH,OW,OC]">
175 <description>Output tensor</description>
176 </argument>
177 </arguments>
178 <types>
179 <type name='in_t' />
180 <type name='weight_t' />
181 <type name='out_t' />
182 </types>
183 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
184 <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
185 <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
186 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
187 <profile name="MI"/>
188 <profile name="MT"/>
189 </typesupport>
190 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
191 <profile name="MI"/>
192 <profile name="MT"/>
193 </typesupport>
194 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
195 <profile name="MI"/>
196 <profile name="MT"/>
197 </typesupport>
198 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
199 <profile name="MI"/>
200 <profile name="MT"/>
201 </typesupport>
202 </operator>
203 <operator>
204 <name>DEPTHWISE_CONV2D</name>
205 <arguments>
206 <argument category="input" name="input" type="in_t*" shape="[N,H,W,C]">
207 <description>Input tensor</description>
208 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700209 <argument category="input" name="weight" type="weight_t*" shape="[KH,KW,C,M]">
Eric Kunze58098a72022-08-05 15:40:12 -0700210 <description>Weight kernel size KH x KW</description>
211 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700212 <argument category="input" name="bias" type="out_t*" shape="[C*M]">
Eric Kunze58098a72022-08-05 15:40:12 -0700213 <description>Per output channel bias data.</description>
214 </argument>
215 <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
216 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
217 </argument>
218 <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
219 <description>[stride_y, stride_x]</description>
220 </argument>
221 <argument category="attribute" name="dilation" type="int32_t*" shape="[2]">
222 <description>[dilation_y, dilation_x]</description>
223 </argument>
224 <argument category="attribute" name="input_zp" type="in_t" shape="-">
225 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
226 </argument>
227 <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
228 <description>Weight zero point. Must be zero for non-int8 types.</description>
229 </argument>
230 <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,C*M]">
231 <description>Output tensor</description>
232 </argument>
233 </arguments>
234 <types>
235 <type name='in_t' />
236 <type name='weight_t' />
237 <type name='out_t' />
238 </types>
239 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
240 <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
241 <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
242 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
243 <profile name="MI"/>
244 <profile name="MT"/>
245 </typesupport>
246 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
247 <profile name="MI"/>
248 <profile name="MT"/>
249 </typesupport>
250 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
251 <profile name="MI"/>
252 <profile name="MT"/>
253 </typesupport>
254 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
255 <profile name="MI"/>
256 <profile name="MT"/>
257 </typesupport>
258 </operator>
259 <operator>
260 <name>FFT2D</name>
261 <arguments>
262 <argument category="input" name="input_real" type="in_out_t*" shape="[N,H,W]">
263 <description>Real part of the complex input. H,W must be powers of two.</description>
264 </argument>
265 <argument category="input" name="input_imag" type="in_out_t*" shape="[N,H,W]">
266 <description>Imaginary part of the complex input. H,W must be powers of two.</description>
267 </argument>
268 <argument category="attribute" name="inverse" type="bool_t" shape="-">
269 <description>false for forward FFT, true for inverse FFT</description>
270 </argument>
271 <argument category="output" name="output_real" type="in_out_t*" shape="[N,H,W]">
272 <description>Real part of the complex output.</description>
273 </argument>
274 <argument category="output" name="output_imag" type="in_out_t*" shape="[N,H,W]">
275 <description>Imaginary part of the complex output.</description>
276 </argument>
277 </arguments>
278 <types>
279 <type name='in_out_t' />
280 </types>
281 <typesupport mode="fp32" in_out_t="fp32_t" >
282 <profile name="MI"/>
283 <profile name="MT"/>
284 </typesupport>
285 </operator>
286 <operator>
287 <name>FULLY_CONNECTED</name>
288 <arguments>
289 <argument category="input" name="input" type="in_t*" shape="[N,IC]">
290 <description>Input tensor</description>
291 </argument>
292 <argument category="attribute" name="weight" type="weight_t*" shape="[OC,IC]">
293 <description>Weights</description>
294 </argument>
295 <argument category="attribute" name="bias" type="out_t*" shape="[OC]">
296 <description>Per output channel bias data.</description>
297 </argument>
298 <argument category="attribute" name="input_zp" type="in_t" shape="-">
299 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
300 </argument>
301 <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
302 <description>Weight zero point. Must be zero for non-int8 types.</description>
303 </argument>
304 <argument category="output" name="output" type="out_t*" shape="[N,OC]">
305 <description>Output tensor</description>
306 </argument>
307 </arguments>
308 <types>
309 <type name='in_t' />
310 <type name='weight_t' />
311 <type name='out_t' />
312 </types>
313 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
314 <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
315 <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
316 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
317 <profile name="MI"/>
318 <profile name="MT"/>
319 </typesupport>
320 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
321 <profile name="MI"/>
322 <profile name="MT"/>
323 </typesupport>
324 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
325 <profile name="MI"/>
326 <profile name="MT"/>
327 </typesupport>
328 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
329 <profile name="MI"/>
330 <profile name="MT"/>
331 </typesupport>
332 </operator>
333 <operator>
334 <name>MATMUL</name>
335 <arguments>
336 <argument category="input" name="A" type="in_t*" shape="[N,H,C]">
337 <description>Input tensor A, N matrices of size HxC</description>
338 </argument>
339 <argument category="input" name="B" type="in_t*" shape="[N,C,W]">
340 <description>Input tensor B, N matrices of size CxW</description>
341 </argument>
342 <argument category="attribute" name="A_zp" type="in_t" shape="-">
343 <description>Input tensor A zero point. Must be zero for non-int8 types.</description>
344 </argument>
345 <argument category="attribute" name="B_zp" type="in_t" shape="-">
346 <description>Input tensor B zero point. Must be zero for non-int8 types.</description>
347 </argument>
348 <argument category="output" name="output" type="out_t*" shape="[N,H,W]">
349 <description>Output tensor, N matrices of size HxW</description>
350 </argument>
351 </arguments>
352 <types>
353 <type name='in_t' />
354 <type name='out_t' />
355 </types>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700356 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" out_t="int32_t" />
357 <typesupport mode="signed 16x16 with int48 accumulate" in_t="int16_t" out_t="int48_t" />
358 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700359 <profile name="MI"/>
360 <profile name="MT"/>
361 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700362 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700363 <profile name="MI"/>
364 <profile name="MT"/>
365 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700366 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700367 <profile name="MI"/>
368 <profile name="MT"/>
369 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700370 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700371 <profile name="MI"/>
372 <profile name="MT"/>
373 </typesupport>
374 </operator>
375 <operator>
376 <name>MAX_POOL2D</name>
377 <arguments>
378 <argument category="input" name="input" type="in_out_t*" shape="[N,IH,IW,C]">
379 <description>Input tensor 4D</description>
380 </argument>
381 <argument category="attribute" name="kernel" type="int32_t*" shape="[2]">
382 <description>[kernel_y, kernel_x]</description>
383 </argument>
384 <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
385 <description>[stride_y, stride_x]</description>
386 </argument>
387 <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
388 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
389 </argument>
390 <argument category="output" name="output" type="in_out_t*" shape="[N,OH,OW,C]">
391 <description>Output tensor 4D</description>
392 </argument>
393 </arguments>
394 <types>
395 <type name='in_out_t' />
396 </types>
397 <typesupport mode="signed 8" in_out_t="int8_t" />
398 <typesupport mode="16-bit" in_out_t="int16_t" />
399 <typesupport mode="fp16" in_out_t="fp16_t" >
400 <profile name="MI"/>
401 <profile name="MT"/>
402 </typesupport>
403 <typesupport mode="bf16" in_out_t="bf16_t" >
404 <profile name="MI"/>
405 <profile name="MT"/>
406 </typesupport>
407 <typesupport mode="fp32" in_out_t="fp32_t" >
408 <profile name="MI"/>
409 <profile name="MT"/>
410 </typesupport>
411 </operator>
412 <operator>
413 <name>RFFT2D</name>
414 <arguments>
415 <argument category="input" name="input" type="in_out_t*" shape="[N,H,W]">
416 <description>Real input. H,W must be powers of two.</description>
417 </argument>
418 <argument category="output" name="output_real" type="in_out_t*" shape="[N,H/2 + 1,W/2 + 1]">
419 <description>Real part of the complex output</description>
420 </argument>
421 <argument category="output" name="output_imag" type="in_out_t*" shape="[N,H/2 + 1,W/2 + 1]">
422 <description>Imaginary part of the complex output.</description>
423 </argument>
424 </arguments>
425 <types>
426 <type name='in_out_t' />
427 </types>
428 <typesupport mode="fp32" in_out_t="fp32_t" >
429 <profile name="MI"/>
430 <profile name="MT"/>
431 </typesupport>
432 </operator>
433 <operator>
434 <name>TRANSPOSE_CONV2D</name>
435 <arguments>
436 <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,IC]">
437 <description>Input tensor</description>
438 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700439 <argument category="input" name="weight" type="weight_t*" shape="[OC,KH,KW,IC]">
Eric Kunze58098a72022-08-05 15:40:12 -0700440 <description>Weight kernel size KH x KW</description>
441 </argument>
Eric Kunze52dd6bb2022-08-17 15:57:34 -0700442 <argument category="input" name="bias" type="out_t*" shape="[OC]">
Eric Kunze58098a72022-08-05 15:40:12 -0700443 <description>Per output channel bias data.</description>
444 </argument>
445 <argument category="attribute" name="out_pad" type="int32_t*" shape="[4]">
446 <description>[out_pad_top, out_pad_bottom, out_pad_left, out_pad_right]</description>
447 </argument>
448 <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
449 <description>[stride_y, stride_x]</description>
450 </argument>
451 <argument category="attribute" name="out_shape" type="int32_t*" shape="[4]">
452 <description>[N,OH,OW,OC]</description>
453 </argument>
454 <argument category="attribute" name="input_zp" type="in_t" shape="-">
455 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
456 </argument>
457 <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
458 <description>Weight zero point. Must be zero for non-int8 types.</description>
459 </argument>
460 <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,OC]">
461 <description>Output tensor</description>
462 </argument>
463 </arguments>
464 <types>
465 <type name='in_t' />
466 <type name='weight_t' />
467 <type name='out_t' />
468 </types>
469 <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
470 <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
471 <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
472 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
473 <profile name="MI"/>
474 <profile name="MT"/>
475 </typesupport>
476 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
477 <profile name="MI"/>
478 <profile name="MT"/>
479 </typesupport>
480 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
481 <profile name="MI"/>
482 <profile name="MT"/>
483 </typesupport>
484 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
485 <profile name="MI"/>
486 <profile name="MT"/>
487 </typesupport>
488 </operator>
489 </operatorgroup>
490 <operatorgroup name="activation">
491 <operator>
492 <name>CLAMP</name>
493 <arguments>
494 <argument category="input" name="input" type="in_out_t*" shape="shape">
495 <description>Input tensor</description>
496 </argument>
497 <argument category="attribute" name="min_val" type="in_out_t" shape="-">
498 <description>Minimum clip value</description>
499 </argument>
500 <argument category="attribute" name="max_val" type="in_out_t" shape="-">
501 <description>Maximum clip value</description>
502 </argument>
503 <argument category="output" name="output" type="in_out_t*" shape="shape">
504 <description>Output tensor of same type and shape as input</description>
505 </argument>
506 </arguments>
507 <types>
508 <type name='in_out_t'/>
509 </types>
510 <typesupport mode="signed 8" in_out_t="int8_t"/>
511 <typesupport mode="signed 16" in_out_t="int16_t"/>
512 <typesupport mode="fp16" in_out_t="fp16_t">
513 <profile name="MI"/>
514 <profile name="MT"/>
515 </typesupport>
516 <typesupport mode="bf16" in_out_t="bf16_t">
517 <profile name="MI"/>
518 <profile name="MT"/>
519 </typesupport>
520 <typesupport mode="fp32" in_out_t="fp32_t">
521 <profile name="MI"/>
522 <profile name="MT"/>
523 </typesupport>
524 </operator>
525 <operator>
526 <name>SIGMOID</name>
527 <arguments>
528 <argument category="input" name="input" type="in_out_t*" shape="shape">
529 <description>Input tensor</description>
530 </argument>
531 <argument category="output" name="output" type="in_out_t*" shape="shape">
532 <description>Output tensor of same type and shape as input</description>
533 </argument>
534 </arguments>
535 <types>
536 <type name='in_out_t'/>
537 </types>
538 <typesupport mode="fp16" in_out_t="fp16_t">
539 <profile name="MI"/>
540 <profile name="MT"/>
541 </typesupport>
542 <typesupport mode="bf16" in_out_t="bf16_t">
543 <profile name="MI"/>
544 <profile name="MT"/>
545 </typesupport>
546 <typesupport mode="fp32" in_out_t="fp32_t">
547 <profile name="MI"/>
548 <profile name="MT"/>
549 </typesupport>
550 </operator>
551 <operator>
552 <name>TANH</name>
553 <arguments>
554 <argument category="input" name="input" type="in_out_t*" shape="shape">
555 <description>Input tensor</description>
556 </argument>
557 <argument category="output" name="output" type="in_out_t*" shape="shape">
558 <description>Output tensor of same type and shape as input</description>
559 </argument>
560 </arguments>
561 <types>
562 <type name='in_out_t'/>
563 </types>
564 <typesupport mode="fp16" in_out_t="fp16_t">
565 <profile name="MI"/>
566 <profile name="MT"/>
567 </typesupport>
568 <typesupport mode="bf16" in_out_t="bf16_t">
569 <profile name="MI"/>
570 <profile name="MT"/>
571 </typesupport>
572 <typesupport mode="fp32" in_out_t="fp32_t">
573 <profile name="MI"/>
574 <profile name="MT"/>
575 </typesupport>
576 </operator>
577 </operatorgroup>
578 <operatorgroup name="elementwise-binary">
579 <operator>
580 <name>ADD</name>
581 <arguments>
582 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
583 <description>Input tensor</description>
584 </argument>
585 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
586 <description>Input tensor with the same rank as input1</description>
587 </argument>
588 <argument category="output" name="output" type="in_out_t*" shape="shape">
589 <description>Output tensor with broadcast shape if necessary</description>
590 </argument>
591 </arguments>
592 <types>
593 <type name='in_out_t'/>
594 </types>
595 <typesupport mode="signed 32" in_out_t="int32_t"/>
596 <typesupport mode="fp16" in_out_t="fp16_t" >
597 <profile name="MI"/>
598 <profile name="MT"/>
599 </typesupport>
600 <typesupport mode="bf16" in_out_t="bf16_t" >
601 <profile name="MI"/>
602 <profile name="MT"/>
603 </typesupport>
604 <typesupport mode="fp32" in_out_t="fp32_t" >
605 <profile name="MI"/>
606 <profile name="MT"/>
607 </typesupport>
608 </operator>
609 <operator>
610 <name>ARITHMETIC_RIGHT_SHIFT</name>
611 <arguments>
612 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
613 <description>Input tensor</description>
614 </argument>
615 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
616 <description>Input tensor with the same rank as input1</description>
617 </argument>
618 <argument category="attribute" name="round" type="bool_t" shape="-">
619 <description>If true then the shift is rounded</description>
620 </argument>
621 <argument category="output" name="output" type="in_out_t*" shape="shape">
622 <description>Output tensor with broadcast shape if necessary</description>
623 </argument>
624 </arguments>
625 <types>
626 <type name='in_out_t'/>
627 </types>
628 <typesupport mode="signed 8" in_out_t="int8_t"/>
629 <typesupport mode="signed 16" in_out_t="int16_t"/>
630 <typesupport mode="signed 32" in_out_t="int32_t"/>
631 </operator>
632 <operator>
633 <name>BITWISE_AND</name>
634 <arguments>
635 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
636 <description>Input tensor</description>
637 </argument>
638 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
639 <description>Input tensor with the same rank as input1</description>
640 </argument>
641 <argument category="output" name="output" type="in_out_t*" shape="shape">
642 <description>Output tensor with broadcast shape if necessary</description>
643 </argument>
644 </arguments>
645 <types>
646 <type name='in_out_t'/>
647 </types>
648 <typesupport mode="signed 8" in_out_t="int8_t"/>
649 <typesupport mode="signed 16" in_out_t="int16_t"/>
650 <typesupport mode="signed 32" in_out_t="int32_t"/>
651 </operator>
652 <operator>
653 <name>BITWISE_OR</name>
654 <arguments>
655 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
656 <description>Input tensor</description>
657 </argument>
658 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
659 <description>Input tensor with the same rank as input1</description>
660 </argument>
661 <argument category="output" name="output" type="in_out_t*" shape="shape">
662 <description>Output tensor with broadcast shape if necessary</description>
663 </argument>
664 </arguments>
665 <types>
666 <type name='in_out_t'/>
667 </types>
668 <typesupport mode="signed 8" in_out_t="int8_t"/>
669 <typesupport mode="signed 16" in_out_t="int16_t"/>
670 <typesupport mode="signed 32" in_out_t="int32_t"/>
671 </operator>
672 <operator>
673 <name>BITWISE_XOR</name>
674 <arguments>
675 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
676 <description>Input tensor</description>
677 </argument>
678 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
679 <description>Input tensor with the same rank as input1</description>
680 </argument>
681 <argument category="output" name="output" type="in_out_t*" shape="shape">
682 <description>Output tensor with broadcast shape if necessary</description>
683 </argument>
684 </arguments>
685 <types>
686 <type name='in_out_t'/>
687 </types>
688 <typesupport mode="signed 8" in_out_t="int8_t"/>
689 <typesupport mode="signed 16" in_out_t="int16_t"/>
690 <typesupport mode="signed 32" in_out_t="int32_t"/>
691 </operator>
692 <operator>
693 <name>INTDIV</name>
694 <arguments>
695 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
696 <description>Input tensor</description>
697 </argument>
698 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
699 <description>Input tensor with the same rank as input1</description>
700 </argument>
701 <argument category="output" name="output" type="in_out_t*" shape="shape">
702 <description>Output tensor with broadcast shape if necessary</description>
703 </argument>
704 </arguments>
705 <types>
706 <type name='in_out_t'/>
707 </types>
708 <typesupport mode="signed 32" in_out_t="int32_t"/>
709 </operator>
710 <operator>
711 <name>LOGICAL_AND</name>
712 <arguments>
713 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
714 <description>Input tensor</description>
715 </argument>
716 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
717 <description>Input tensor with the same rank as input1</description>
718 </argument>
719 <argument category="output" name="output" type="in_out_t*" shape="shape">
720 <description>Output tensor with broadcast shape if necessary</description>
721 </argument>
722 </arguments>
723 <types>
724 <type name='in_out_t'/>
725 </types>
726 <typesupport mode="boolean" in_out_t="bool_t"/>
727 </operator>
728 <operator>
729 <name>LOGICAL_LEFT_SHIFT</name>
730 <arguments>
731 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
732 <description>Input tensor</description>
733 </argument>
734 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
735 <description>Input tensor with the same rank as input1</description>
736 </argument>
737 <argument category="output" name="output" type="in_out_t*" shape="shape">
738 <description>Output tensor with broadcast shape if necessary</description>
739 </argument>
740 </arguments>
741 <types>
742 <type name='in_out_t'/>
743 </types>
744 <typesupport mode="signed 8" in_out_t="int8_t"/>
745 <typesupport mode="signed 16" in_out_t="int16_t"/>
746 <typesupport mode="signed 32" in_out_t="int32_t"/>
747 </operator>
748 <operator>
749 <name>LOGICAL_RIGHT_SHIFT</name>
750 <arguments>
751 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
752 <description>Input tensor</description>
753 </argument>
754 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
755 <description>Input tensor with the same rank as input1</description>
756 </argument>
757 <argument category="output" name="output" type="in_out_t*" shape="shape">
758 <description>Output tensor with broadcast shape if necessary</description>
759 </argument>
760 </arguments>
761 <types>
762 <type name='in_out_t'/>
763 </types>
764 <typesupport mode="signed 8" in_out_t="int8_t"/>
765 <typesupport mode="signed 16" in_out_t="int16_t"/>
766 <typesupport mode="signed 32" in_out_t="int32_t"/>
767 </operator>
768 <operator>
769 <name>LOGICAL_OR</name>
770 <arguments>
771 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
772 <description>Input tensor</description>
773 </argument>
774 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
775 <description>Input tensor with the same rank as input1</description>
776 </argument>
777 <argument category="output" name="output" type="in_out_t*" shape="shape">
778 <description>Output tensor with broadcast shape if necessary</description>
779 </argument>
780 </arguments>
781 <types>
782 <type name='in_out_t'/>
783 </types>
784 <typesupport mode="boolean" in_out_t="bool_t"/>
785 </operator>
786 <operator>
787 <name>LOGICAL_XOR</name>
788 <arguments>
789 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
790 <description>Input tensor</description>
791 </argument>
792 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
793 <description>Input tensor with the same rank as input1</description>
794 </argument>
795 <argument category="output" name="output" type="in_out_t*" shape="shape">
796 <description>Output tensor with broadcast shape if necessary</description>
797 </argument>
798 </arguments>
799 <types>
800 <type name='in_out_t'/>
801 </types>
802 <typesupport mode="boolean" in_out_t="bool_t"/>
803 </operator>
804 <operator>
805 <name>MAXIMUM</name>
806 <arguments>
807 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
808 <description>Input tensor</description>
809 </argument>
810 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
811 <description>Input tensor with the same rank as input1</description>
812 </argument>
813 <argument category="output" name="output" type="in_out_t*" shape="shape">
814 <description>Output tensor with broadcast shape if necessary</description>
815 </argument>
816 </arguments>
817 <types>
818 <type name='in_out_t'/>
819 </types>
820 <typesupport mode="signed 32" in_out_t="int32_t"/>
821 <typesupport mode="fp16" in_out_t="fp16_t" >
822 <profile name="MI"/>
823 <profile name="MT"/>
824 </typesupport>
825 <typesupport mode="bf16" in_out_t="bf16_t" >
826 <profile name="MI"/>
827 <profile name="MT"/>
828 </typesupport>
829 <typesupport mode="fp32" in_out_t="fp32_t" >
830 <profile name="MI"/>
831 <profile name="MT"/>
832 </typesupport>
833 </operator>
834 <operator>
835 <name>MINIMUM</name>
836 <arguments>
837 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
838 <description>Input tensor</description>
839 </argument>
840 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
841 <description>Input tensor with the same rank as input1</description>
842 </argument>
843 <argument category="output" name="output" type="in_out_t*" shape="shape">
844 <description>Output tensor with broadcast shape if necessary</description>
845 </argument>
846 </arguments>
847 <types>
848 <type name='in_out_t'/>
849 </types>
850 <typesupport mode="signed 32" in_out_t="int32_t"/>
851 <typesupport mode="fp16" in_out_t="fp16_t" >
852 <profile name="MI"/>
853 <profile name="MT"/>
854 </typesupport>
855 <typesupport mode="bf16" in_out_t="bf16_t" >
856 <profile name="MI"/>
857 <profile name="MT"/>
858 </typesupport>
859 <typesupport mode="fp32" in_out_t="fp32_t" >
860 <profile name="MI"/>
861 <profile name="MT"/>
862 </typesupport>
863 </operator>
864 <operator>
865 <name>MUL</name>
866 <arguments>
867 <argument category="input" name="input1" type="in_t*" shape="shape1">
868 <description>Input tensor</description>
869 </argument>
870 <argument category="input" name="input2" type="in_t*" shape="shape2">
871 <description>Input tensor with the same rank as input1</description>
872 </argument>
873 <argument category="input(MT)|attribute(BI,MI)" name="shift" type="uint6_t" shape="-">
874 <description>Result right shift (int32_t data type only)</description>
875 </argument>
876 <argument category="output" name="output" type="out_t*" shape="shape">
877 <description>Output tensor with broadcast shape if necessary</description>
878 </argument>
879 </arguments>
880 <types>
881 <type name='in_t'/>
882 <type name='out_t'/>
883 </types>
884 <typesupport mode="signed 8" in_t="int8_t" out_t="int32_t"/>
885 <typesupport mode="signed 16" in_t="int16_t" out_t="int32_t"/>
886 <typesupport mode="signed 32" in_t="int32_t" out_t="int32_t"/>
887 <typesupport mode="fp16" in_t="fp16_t" out_t="fp16_t">
888 <profile name="MI"/>
889 <profile name="MT"/>
890 </typesupport>
891 <typesupport mode="bf16" in_t="bf16_t" out_t="bf16_t">
892 <profile name="MI"/>
893 <profile name="MT"/>
894 </typesupport>
895 <typesupport mode="fp32" in_t="fp32_t" out_t="fp32_t">
896 <profile name="MI"/>
897 <profile name="MT"/>
898 </typesupport>
899 </operator>
900 <operator>
901 <name>POW</name>
902 <arguments>
903 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
Dominic Symes8783adb2022-07-27 12:53:11 +0100904 <description>Input tensor</description>
Eric Kunze58098a72022-08-05 15:40:12 -0700905 </argument>
906 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
907 <description>Input tensor with the same rank as input1</description>
908 </argument>
909 <argument category="output" name="output" type="in_out_t*" shape="shape">
910 <description>Output tensor with broadcast shape if necessary</description>
911 </argument>
912 </arguments>
913 <types>
914 <type name='in_out_t'/>
915 </types>
916 <typesupport mode="fp16" in_out_t="fp16_t" >
917 <profile name="MI"/>
918 <profile name="MT"/>
919 </typesupport>
920 <typesupport mode="bf16" in_out_t="bf16_t" >
921 <profile name="MI"/>
922 <profile name="MT"/>
923 </typesupport>
924 <typesupport mode="fp32" in_out_t="fp32_t" >
925 <profile name="MI"/>
926 <profile name="MT"/>
927 </typesupport>
928 </operator>
929 <operator>
930 <name>SUB</name>
931 <arguments>
932 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
933 <description>Input tensor</description>
934 </argument>
935 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
936 <description>Input tensor with the same rank as input1</description>
937 </argument>
938 <argument category="output" name="output" type="in_out_t*" shape="shape">
939 <description>Output tensor with broadcast shape if necessary</description>
940 </argument>
941 </arguments>
942 <types>
943 <type name='in_out_t'/>
944 </types>
945 <typesupport mode="signed 32" in_out_t="int32_t"/>
946 <typesupport mode="fp16" in_out_t="fp16_t" >
947 <profile name="MI"/>
948 <profile name="MT"/>
949 </typesupport>
950 <typesupport mode="bf16" in_out_t="bf16_t" >
951 <profile name="MI"/>
952 <profile name="MT"/>
953 </typesupport>
954 <typesupport mode="fp32" in_out_t="fp32_t" >
955 <profile name="MI"/>
956 <profile name="MT"/>
957 </typesupport>
958 </operator>
959 <operator>
960 <name>TABLE</name>
961 <arguments>
962 <argument category="input" name="input" type="in_t*" shape="shape">
963 <description>Input tensor</description>
964 </argument>
965 <argument category="input(MT)|attribute(BI,MI)" name="table" type="table_t*" shape="[TABLE_SIZE]">
966 <description>Lookup table tensor</description>
967 </argument>
968 <argument category="output" name="output" type="out_t*" shape="shape">
969 <description>Output tensor</description>
970 </argument>
971 </arguments>
972 <types>
973 <type name='in_t'/>
974 <type name='table_t'/>
975 <type name='out_t'/>
976 <type name='TABLE_SIZE'/>
977 </types>
978 <typesupport mode="signed 8" in_t="int8_t" table_t="int8_t" TABLE_SIZE="256" out_t="int8_t"/>
979 <typesupport mode="signed 16" in_t="int16_t" table_t="int16_t" TABLE_SIZE="513" out_t="int32_t"/>
980 </operator>
981 </operatorgroup>
982 <operatorgroup name="elementwise-unary">
983 <operator>
984 <name>ABS</name>
985 <arguments>
986 <argument category="input" name="input1" type="in_out_t*" shape="shape">
987 <description>Input tensor</description>
988 </argument>
989 <argument category="output" name="output" type="in_out_t*" shape="shape">
990 <description>Output tensor of same type, size as the input tensor</description>
991 </argument>
992 </arguments>
993 <types>
994 <type name='in_out_t'/>
995 </types>
996 <typesupport mode="signed 32" in_out_t="int32_t"/>
997 <typesupport mode="fp16" in_out_t="fp16_t" >
998 <profile name="MI"/>
999 <profile name="MT"/>
1000 </typesupport>
1001 <typesupport mode="bf16" in_out_t="bf16_t" >
1002 <profile name="MI"/>
1003 <profile name="MT"/>
1004 </typesupport>
1005 <typesupport mode="fp32" in_out_t="fp32_t" >
1006 <profile name="MI"/>
1007 <profile name="MT"/>
1008 </typesupport>
1009 </operator>
1010 <operator>
1011 <name>BITWISE_NOT</name>
1012 <arguments>
1013 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1014 <description>Input tensor</description>
1015 </argument>
1016 <argument category="output" name="output" type="in_out_t*" shape="shape">
1017 <description>Output tensor of same type, size as the input tensor</description>
1018 </argument>
1019 </arguments>
1020 <types>
1021 <type name='in_out_t'/>
1022 </types>
1023 <typesupport mode="signed 8" in_out_t="int8_t"/>
1024 <typesupport mode="signed 16" in_out_t="int16_t"/>
1025 <typesupport mode="signed 32" in_out_t="int32_t"/>
1026 </operator>
1027 <operator>
1028 <name>CEIL</name>
1029 <arguments>
1030 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1031 <description>Input tensor</description>
1032 </argument>
1033 <argument category="output" name="output" type="in_out_t*" shape="shape">
1034 <description>Output tensor of same type, size as the input tensor</description>
1035 </argument>
1036 </arguments>
1037 <types>
1038 <type name='in_out_t'/>
1039 </types>
1040 <typesupport mode="fp16" in_out_t="fp16_t" >
1041 <profile name="MI"/>
1042 <profile name="MT"/>
1043 </typesupport>
1044 <typesupport mode="bf16" in_out_t="bf16_t" >
1045 <profile name="MI"/>
1046 <profile name="MT"/>
1047 </typesupport>
1048 <typesupport mode="fp32" in_out_t="fp32_t" >
1049 <profile name="MI"/>
1050 <profile name="MT"/>
1051 </typesupport>
1052 </operator>
1053 <operator>
1054 <name>CLZ</name>
1055 <arguments>
1056 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1057 <description>Input tensor</description>
1058 </argument>
1059 <argument category="output" name="output" type="in_out_t*" shape="shape">
1060 <description>Output tensor of same type, size as the input tensor</description>
1061 </argument>
1062 </arguments>
1063 <types>
1064 <type name='in_out_t'/>
1065 </types>
1066 <typesupport mode="signed 32" in_out_t="int32_t"/>
1067 </operator>
1068 <operator>
1069 <name>EXP</name>
1070 <arguments>
1071 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1072 <description>Input tensor</description>
1073 </argument>
1074 <argument category="output" name="output" type="in_out_t*" shape="shape">
1075 <description>Output tensor of same type, size as the input tensor</description>
1076 </argument>
1077 </arguments>
1078 <types>
1079 <type name='in_out_t'/>
1080 </types>
1081 <typesupport mode="fp16" in_out_t="fp16_t">
1082 <profile name="MI"/>
1083 <profile name="MT"/>
1084 </typesupport>
1085 <typesupport mode="bf16" in_out_t="bf16_t">
1086 <profile name="MI"/>
1087 <profile name="MT"/>
1088 </typesupport>
1089 <typesupport mode="fp32" in_out_t="fp32_t">
1090 <profile name="MI"/>
1091 <profile name="MT"/>
1092 </typesupport>
1093 </operator>
1094 <operator>
1095 <name>FLOOR</name>
1096 <arguments>
1097 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1098 <description>Input tensor</description>
1099 </argument>
1100 <argument category="output" name="output" type="in_out_t*" shape="shape">
1101 <description>Output tensor of same type, size as the input tensor</description>
1102 </argument>
1103 </arguments>
1104 <types>
1105 <type name='in_out_t'/>
1106 </types>
1107 <typesupport mode="fp16" in_out_t="fp16_t">
1108 <profile name="MI"/>
1109 <profile name="MT"/>
1110 </typesupport>
1111 <typesupport mode="bf16" in_out_t="bf16_t">
1112 <profile name="MI"/>
1113 <profile name="MT"/>
1114 </typesupport>
1115 <typesupport mode="fp32" in_out_t="fp32_t">
1116 <profile name="MI"/>
1117 <profile name="MT"/>
1118 </typesupport>
1119 </operator>
1120 <operator>
1121 <name>LOG</name>
1122 <arguments>
1123 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1124 <description>Input tensor</description>
1125 </argument>
1126 <argument category="output" name="output" type="in_out_t*" shape="shape">
1127 <description>Output tensor of same type, size as the input tensor</description>
1128 </argument>
1129 </arguments>
1130 <types>
1131 <type name='in_out_t'/>
1132 </types>
1133 <typesupport mode="fp16" in_out_t="fp16_t">
1134 <profile name="MI"/>
1135 <profile name="MT"/>
1136 </typesupport>
1137 <typesupport mode="bf16" in_out_t="bf16_t">
1138 <profile name="MI"/>
1139 <profile name="MT"/>
1140 </typesupport>
1141 <typesupport mode="fp32" in_out_t="fp32_t">
1142 <profile name="MI"/>
1143 <profile name="MT"/>
1144 </typesupport>
1145 </operator>
1146 <operator>
1147 <name>LOGICAL_NOT</name>
1148 <arguments>
1149 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1150 <description>Input tensor</description>
1151 </argument>
1152 <argument category="output" name="output" type="in_out_t*" shape="shape">
1153 <description>Output tensor of same type, size as the input tensor</description>
1154 </argument>
1155 </arguments>
1156 <types>
1157 <type name='in_out_t'/>
1158 </types>
1159 <typesupport mode="Boolean" in_out_t="bool_t"/>
1160 </operator>
1161 <operator>
1162 <name>NEGATE</name>
1163 <arguments>
1164 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1165 <description>Input tensor</description>
1166 </argument>
1167 <argument category="attribute" name="input1_zp" type="in_out_t" shape="-">
1168 <description>Input 1 zero point. Must be zero for non-int8 types.</description>
1169 </argument>
1170 <argument category="attribute" name="output_zp" type="in_out_t" shape="-">
1171 <description>Output zero point. Must be zero for non-int8 types.</description>
1172 </argument>
1173 <argument category="output" name="output" type="in_out_t*" shape="shape">
1174 <description>Output tensor of same type, size as the input tensor</description>
1175 </argument>
1176 </arguments>
1177 <types>
1178 <type name='in_out_t'/>
1179 <type name='acc_t'/>
1180 </types>
1181 <typesupport mode="signed 8" in_out_t="int8_t" acc_t="int32_t"/>
1182 <typesupport mode="signed 16" in_out_t="int16_t" acc_t="int32_t"/>
1183 <typesupport mode="signed 32" in_out_t="int32_t" acc_t="int32_t"/>
1184 <typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
1185 <profile name="MI"/>
1186 <profile name="MT"/>
1187 </typesupport>
1188 <typesupport mode="bf16" in_out_t="bf16_t" acc_t="bf16_t">
1189 <profile name="MI"/>
1190 <profile name="MT"/>
1191 </typesupport>
1192 <typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
1193 <profile name="MI"/>
1194 <profile name="MT"/>
1195 </typesupport>
1196 </operator>
1197 <operator>
1198 <name>RECIPROCAL</name>
1199 <arguments>
1200 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1201 <description>Input tensor</description>
1202 </argument>
1203 <argument category="output" name="output" type="in_out_t*" shape="shape">
1204 <description>Output tensor of same type, size as the input tensor</description>
1205 </argument>
1206 </arguments>
1207 <types>
1208 <type name='in_out_t'/>
1209 </types>
1210 <typesupport mode="fp16" in_out_t="fp16_t">
1211 <profile name="MI"/>
1212 <profile name="MT"/>
1213 </typesupport>
1214 <typesupport mode="bf16" in_out_t="bf16_t">
1215 <profile name="MI"/>
1216 <profile name="MT"/>
1217 </typesupport>
1218 <typesupport mode="fp32" in_out_t="fp32_t">
1219 <profile name="MI"/>
1220 <profile name="MT"/>
1221 </typesupport>
1222 </operator>
1223 <operator>
1224 <name>RSQRT</name>
1225 <arguments>
1226 <argument category="input" name="input1" type="in_out_t*" shape="shape">
1227 <description>Input tensor</description>
1228 </argument>
1229 <argument category="output" name="output" type="in_out_t*" shape="shape">
1230 <description>Output tensor of same type, size as the input tensor</description>
1231 </argument>
1232 </arguments>
1233 <types>
1234 <type name='in_out_t'/>
1235 </types>
1236 <typesupport mode="fp16" in_out_t="fp16_t">
1237 <profile name="MI"/>
1238 <profile name="MT"/>
1239 </typesupport>
1240 <typesupport mode="bf16" in_out_t="bf16_t">
1241 <profile name="MI"/>
1242 <profile name="MT"/>
1243 </typesupport>
1244 <typesupport mode="fp32" in_out_t="fp32_t">
1245 <profile name="MI"/>
1246 <profile name="MT"/>
1247 </typesupport>
1248 </operator>
1249 </operatorgroup>
1250 <operatorgroup name="elementwise-ternary">
1251 <operator>
1252 <name>SELECT</name>
1253 <arguments>
1254 <argument category="input" name="input1" type="cmp_t" shape="shape1">
1255 <description>Input selector tensor</description>
1256 </argument>
1257 <argument category="input" name="input2" type="in_out_t*" shape="shape2">
1258 <description>Input value tensor if input1 is True</description>
1259 </argument>
1260 <argument category="input" name="input3" type="in_out_t*" shape="shape3">
1261 <description>Input value tensor if input1 is False</description>
1262 </argument>
1263 <argument category="output" name="output" type="in_out_t*" shape="shape">
1264 <description>Output tensor of same type as input2 and input3, with broadcast shape if necessary</description>
1265 </argument>
1266 </arguments>
1267 <types>
1268 <type name='cmp_t'/>
1269 <type name='in_out_t'/>
1270 </types>
1271 <typesupport mode="Boolean" cmp_t="bool_t" in_out_t="bool_t"/>
1272 <typesupport mode="signed 8" cmp_t="bool_t" in_out_t="int8_t"/>
1273 <typesupport mode="signed 16" cmp_t="bool_t" in_out_t="int16_t"/>
1274 <typesupport mode="signed 32" cmp_t="bool_t" in_out_t="int32_t"/>
1275 <typesupport mode="fp16" cmp_t="bool_t" in_out_t="fp16_t">
1276 <profile name="MI"/>
1277 <profile name="MT"/>
1278 </typesupport>
1279 <typesupport mode="bf16" cmp_t="bool_t" in_out_t="bf16_t">
1280 <profile name="MI"/>
1281 <profile name="MT"/>
1282 </typesupport>
1283 <typesupport mode="fp32" cmp_t="bool_t" in_out_t="fp32_t">
1284 <profile name="MI"/>
1285 <profile name="MT"/>
1286 </typesupport>
1287 </operator>
1288 </operatorgroup>
1289 <operatorgroup name="comparison">
1290 <operator>
1291 <name>EQUAL</name>
1292 <arguments>
1293 <argument category="input" name="input1" type="in_t*" shape="shape1">
1294 <description>Input tensor</description>
1295 </argument>
1296 <argument category="input" name="input2" type="in_t*" shape="shape2">
1297 <description>Input tensor with the same rank as input1</description>
1298 </argument>
1299 <argument category="output" name="output" type="out_t*" shape="shape">
1300 <description>Output tensor with broadcast shape if necessary</description>
1301 </argument>
1302 </arguments>
1303 <types>
1304 <type name='in_t'/>
1305 <type name='out_t'/>
1306 </types>
1307 <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
1308 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1309 <profile name="MI"/>
1310 <profile name="MT"/>
1311 </typesupport>
1312 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1313 <profile name="MI"/>
1314 <profile name="MT"/>
1315 </typesupport>
1316 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1317 <profile name="MI"/>
1318 <profile name="MT"/>
1319 </typesupport>
1320 </operator>
1321 <operator>
1322 <name>GREATER</name>
1323 <arguments>
1324 <argument category="input" name="input1" type="in_t*" shape="shape1">
1325 <description>Input tensor</description>
1326 </argument>
1327 <argument category="input" name="input2" type="in_t*" shape="shape2">
1328 <description>Input tensor with the same rank as input1</description>
1329 </argument>
1330 <argument category="output" name="output" type="out_t*" shape="shape">
1331 <description>Output tensor with broadcast shape if necessary</description>
1332 </argument>
1333 </arguments>
1334 <types>
1335 <type name='in_t'/>
1336 <type name='out_t'/>
1337 </types>
1338 <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
1339 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1340 <profile name="MI"/>
1341 <profile name="MT"/>
1342 </typesupport>
1343 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1344 <profile name="MI"/>
1345 <profile name="MT"/>
1346 </typesupport>
1347 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1348 <profile name="MI"/>
1349 <profile name="MT"/>
1350 </typesupport>
1351 </operator>
1352 <operator>
1353 <name>GREATER_EQUAL</name>
1354 <arguments>
1355 <argument category="input" name="input1" type="in_t*" shape="shape1">
1356 <description>Input tensor</description>
1357 </argument>
1358 <argument category="input" name="input2" type="in_t*" shape="shape2">
1359 <description>Input tensor with the same rank as input1</description>
1360 </argument>
1361 <argument category="output" name="output" type="out_t*" shape="shape">
1362 <description>Output tensor with broadcast shape if necessary</description>
1363 </argument>
1364 </arguments>
1365 <types>
1366 <type name='in_t'/>
1367 <type name='out_t'/>
1368 </types>
1369 <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
1370 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1371 <profile name="MI"/>
1372 <profile name="MT"/>
1373 </typesupport>
1374 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1375 <profile name="MI"/>
1376 <profile name="MT"/>
1377 </typesupport>
1378 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1379 <profile name="MI"/>
1380 <profile name="MT"/>
1381 </typesupport>
1382 </operator>
1383 </operatorgroup>
1384 <operatorgroup name="reduction">
1385 <operator>
1386 <name>REDUCE_ALL</name>
1387 <arguments>
1388 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1389 <description>Input tensor with rank from 1 to 4</description>
1390 </argument>
1391 <argument category="attribute" name="axis" type="int32_t" shape="-">
1392 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1393 </argument>
1394 <argument category="output" name="output" type="in_out_t*" shape="shape">
1395 <description>Output tensor. Same rank as the input tensor.</description>
1396 </argument>
1397 </arguments>
1398 <types>
1399 <type name='in_out_t'/>
1400 </types>
1401 <typesupport mode="boolean" in_out_t="bool_t"/>
1402 </operator>
1403 <operator>
1404 <name>REDUCE_ANY</name>
1405 <arguments>
1406 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1407 <description>Input tensor with rank from 1 to 4</description>
1408 </argument>
1409 <argument category="attribute" name="axis" type="int32_t" shape="-">
1410 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1411 </argument>
1412 <argument category="output" name="output" type="in_out_t*" shape="shape">
1413 <description>Output tensor. Same rank as the input tensor.</description>
1414 </argument>
1415 </arguments>
1416 <types>
1417 <type name='in_out_t'/>
1418 </types>
1419 <typesupport mode="boolean" in_out_t="bool_t"/>
1420 </operator>
1421 <operator>
1422 <name>REDUCE_MAX</name>
1423 <arguments>
1424 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1425 <description>Input tensor with rank from 1 to 4</description>
1426 </argument>
1427 <argument category="attribute" name="axis" type="int32_t" shape="-">
1428 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1429 </argument>
1430 <argument category="output" name="output" type="in_out_t*" shape="shape">
1431 <description>Output tensor. Same rank as the input tensor.</description>
1432 </argument>
1433 </arguments>
1434 <types>
1435 <type name='in_out_t'/>
1436 </types>
1437 <typesupport mode="signed 8" in_out_t="int8_t"/>
1438 <typesupport mode="signed 16" in_out_t="int16_t"/>
1439 <typesupport mode="signed 32" in_out_t="int32_t"/>
1440 <typesupport mode="fp16" in_out_t="fp16_t">
1441 <profile name="MI"/>
1442 <profile name="MT"/>
1443 </typesupport>
1444 <typesupport mode="bf16" in_out_t="bf16_t">
1445 <profile name="MI"/>
1446 <profile name="MT"/>
1447 </typesupport>
1448 <typesupport mode="fp32" in_out_t="fp32_t">
1449 <profile name="MI"/>
1450 <profile name="MT"/>
1451 </typesupport>
1452 </operator>
1453 <operator>
1454 <name>REDUCE_MIN</name>
1455 <arguments>
1456 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1457 <description>Input tensor with rank from 1 to 4</description>
1458 </argument>
1459 <argument category="attribute" name="axis" type="int32_t" shape="-">
1460 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1461 </argument>
1462 <argument category="output" name="output" type="in_out_t*" shape="shape">
1463 <description>Output tensor. Same rank as the input tensor.</description>
1464 </argument>
1465 </arguments>
1466 <types>
1467 <type name='in_out_t'/>
1468 </types>
1469 <typesupport mode="signed 8" in_out_t="int8_t"/>
1470 <typesupport mode="signed 16" in_out_t="int16_t"/>
1471 <typesupport mode="signed 32" in_out_t="int32_t"/>
1472 <typesupport mode="fp16" in_out_t="fp16_t">
1473 <profile name="MI"/>
1474 <profile name="MT"/>
1475 </typesupport>
1476 <typesupport mode="bf16" in_out_t="bf16_t">
1477 <profile name="MI"/>
1478 <profile name="MT"/>
1479 </typesupport>
1480 <typesupport mode="fp32" in_out_t="fp32_t">
1481 <profile name="MI"/>
1482 <profile name="MT"/>
1483 </typesupport>
1484 </operator>
1485 <operator>
1486 <name>REDUCE_PRODUCT</name>
1487 <arguments>
1488 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1489 <description>Input tensor with rank from 1 to 4</description>
1490 </argument>
1491 <argument category="attribute" name="axis" type="int32_t" shape="-">
1492 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1493 </argument>
1494 <argument category="output" name="output" type="in_out_t*" shape="shape">
1495 <description>Output tensor. Same rank as the input tensor.</description>
1496 </argument>
1497 </arguments>
1498 <types>
1499 <type name='in_out_t'/>
1500 </types>
1501 <typesupport mode="fp16" in_out_t="fp16_t">
1502 <profile name="MI"/>
1503 <profile name="MT"/>
1504 </typesupport>
1505 <typesupport mode="bf16" in_out_t="bf16_t">
1506 <profile name="MI"/>
1507 <profile name="MT"/>
1508 </typesupport>
1509 <typesupport mode="fp32" in_out_t="fp32_t">
1510 <profile name="MI"/>
1511 <profile name="MT"/>
1512 </typesupport>
1513 </operator>
1514 <operator>
1515 <name>REDUCE_SUM</name>
1516 <arguments>
1517 <argument category="input" name="input" type="in_out_t*" shape="shape1">
1518 <description>Input tensor with rank from 1 to 4</description>
1519 </argument>
1520 <argument category="attribute" name="axis" type="int32_t" shape="-">
1521 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
1522 </argument>
1523 <argument category="output" name="output" type="in_out_t*" shape="shape">
1524 <description>Output tensor. Same rank as the input tensor.</description>
1525 </argument>
1526 </arguments>
1527 <types>
1528 <type name='in_out_t'/>
1529 </types>
1530 <typesupport mode="signed 32" in_out_t="int32_t"/>
1531 <typesupport mode="fp16" in_out_t="fp16_t">
1532 <profile name="MI"/>
1533 <profile name="MT"/>
1534 </typesupport>
1535 <typesupport mode="bf16" in_out_t="bf16_t">
1536 <profile name="MI"/>
1537 <profile name="MT"/>
1538 </typesupport>
1539 <typesupport mode="fp32" in_out_t="fp32_t">
1540 <profile name="MI"/>
1541 <profile name="MT"/>
1542 </typesupport>
1543 </operator>
1544 </operatorgroup>
1545 <operatorgroup name="data-layout">
1546 <operator>
1547 <name>CONCAT</name>
1548 <arguments>
1549 <!-- FIXME express list of tensors better -->
1550 <argument category="input" name="input1" type="in_out_t*" shape="shapes1[]">
1551 <description>List of input tensors. All inputs must have the same rank and data type</description>
1552 </argument>
1553 <argument category="attribute" name="axis" type="int32_t" shape="-">
1554 <description>Axis along which concatenation is to occur, in range from 0 to rank(shape)-1</description>
1555 </argument>
1556 <argument category="output" name="output" type="in_out_t*" shape="shape">
1557 <description>Output tensor</description>
1558 </argument>
1559 </arguments>
1560 <types>
1561 <type name='in_out_t'/>
1562 </types>
1563 <typesupport mode="boolean" in_out_t="bool_t"/>
1564 <typesupport mode="signed 8" in_out_t="int8_t"/>
1565 <typesupport mode="signed 16" in_out_t="int16_t"/>
1566 <typesupport mode="signed 32" in_out_t="int32_t"/>
1567 <typesupport mode="fp16" in_out_t="fp16_t">
1568 <profile name="MI"/>
1569 <profile name="MT"/>
1570 </typesupport>
1571 <typesupport mode="bf16" in_out_t="bf16_t">
1572 <profile name="MI"/>
1573 <profile name="MT"/>
1574 </typesupport>
1575 <typesupport mode="fp32" in_out_t="fp32_t">
1576 <profile name="MI"/>
1577 <profile name="MT"/>
1578 </typesupport>
1579 </operator>
1580 <operator>
1581 <name>PAD</name>
1582 <arguments>
1583 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
1584 <description>Input tensor</description>
1585 </argument>
1586 <argument category="attribute" name="padding" type="int32_t" shape="[rank(shape1),2]">
1587 <description>Number of pad elements at the start and end of each dimension</description>
1588 </argument>
1589 <argument category="attribute" name="pad_const" type="in_out_t" shape="-">
1590 <description>Constant value to be used as padding</description>
1591 </argument>
1592 <argument category="output" name="output" type="in_out_t*" shape="shape">
1593 <description>Output tensor of same type as the input tensor</description>
1594 </argument>
1595 </arguments>
1596 <types>
1597 <type name='in_out_t'/>
1598 </types>
1599 <typesupport mode="boolean" in_out_t="bool_t"/>
1600 <typesupport mode="signed 8" in_out_t="int8_t"/>
1601 <typesupport mode="signed 16" in_out_t="int16_t"/>
1602 <typesupport mode="signed 32" in_out_t="int32_t"/>
1603 <typesupport mode="fp16" in_out_t="fp16_t">
1604 <profile name="MI"/>
1605 <profile name="MT"/>
1606 </typesupport>
1607 <typesupport mode="bf16" in_out_t="bf16_t">
1608 <profile name="MI"/>
1609 <profile name="MT"/>
1610 </typesupport>
1611 <typesupport mode="fp32" in_out_t="fp32_t">
1612 <profile name="MI"/>
1613 <profile name="MT"/>
1614 </typesupport>
1615 </operator>
1616 <operator>
1617 <name>RESHAPE</name>
1618 <arguments>
1619 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
1620 <description>Input tensor</description>
1621 </argument>
1622 <argument category="attribute" name="new_shape" type="int32_t" shape="[rank(output)]">
1623 <description>List of values, with each element giving the size of the result tensor for the given dimension. At most one dimension may be given as -1 to automatically calculate the dimension size.</description>
1624 </argument>
1625 <argument category="output" name="output" type="in_out_t*" shape="shape">
1626 <description>Output tensor of same type, size as the input tensor</description>
1627 </argument>
1628 </arguments>
1629 <types>
1630 <type name='in_out_t'/>
1631 </types>
1632 <typesupport mode="boolean" in_out_t="bool_t"/>
1633 <typesupport mode="signed 8" in_out_t="int8_t"/>
1634 <typesupport mode="signed 16" in_out_t="int16_t"/>
1635 <typesupport mode="signed 32" in_out_t="int32_t"/>
1636 <typesupport mode="fp16" in_out_t="fp16_t">
1637 <profile name="MI"/>
1638 <profile name="MT"/>
1639 </typesupport>
1640 <typesupport mode="bf16" in_out_t="bf16_t">
1641 <profile name="MI"/>
1642 <profile name="MT"/>
1643 </typesupport>
1644 <typesupport mode="fp32" in_out_t="fp32_t">
1645 <profile name="MI"/>
1646 <profile name="MT"/>
1647 </typesupport>
1648 </operator>
1649 <operator>
1650 <name>REVERSE</name>
1651 <arguments>
1652 <argument category="input" name="input" type="in_out_t*" shape="shape">
Dominic Symes8783adb2022-07-27 12:53:11 +01001653 <description>Input tensor with rank from 1 to 4</description>
Eric Kunze58098a72022-08-05 15:40:12 -07001654 </argument>
1655 <argument category="attribute" name="axis" type="int32_t" shape="-">
1656 <description>Axis to reverse, in range from 0 to rank(shape)-1</description>
1657 </argument>
1658 <argument category="output" name="output" type="in_out_t*" shape="shape">
1659 <description>Output tensor. Same shape as input tensor</description>
1660 </argument>
1661 </arguments>
1662 <types>
1663 <type name='in_out_t'/>
1664 </types>
1665 <typesupport mode="boolean" in_out_t="bool_t"/>
1666 <typesupport mode="signed 8" in_out_t="int8_t"/>
1667 <typesupport mode="signed 16" in_out_t="int16_t"/>
1668 <typesupport mode="signed 32" in_out_t="int32_t"/>
1669 <typesupport mode="fp16" in_out_t="fp16_t">
1670 <profile name="MI"/>
1671 <profile name="MT"/>
1672 </typesupport>
1673 <typesupport mode="bf16" in_out_t="bf16_t">
1674 <profile name="MI"/>
1675 <profile name="MT"/>
1676 </typesupport>
1677 <typesupport mode="fp32" in_out_t="fp32_t">
1678 <profile name="MI"/>
1679 <profile name="MT"/>
1680 </typesupport>
1681 </operator>
1682 <operator>
1683 <name>SLICE</name>
1684 <arguments>
1685 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
1686 <description>Input tensor with rank from 1 to 4</description>
1687 </argument>
1688 <argument category="attribute" name="start" type="int32_t" shape="[rank(input1)]">
1689 <description>List of integer coordinates, of length equal to the rank of input1. Start coordinate for slicing.</description>
1690 </argument>
1691 <argument category="attribute" name="size" type="int32_t" shape="[rank(input1)]">
1692 <description>List of integer size values, of length equal to the rank of input1. Size of the input to be
1693used.</description>
1694 </argument>
1695 <argument category="output" name="output" type="in_out_t*" shape="shape">
1696 <description>Output tensor of same type as the input tensor</description>
1697 </argument>
1698 </arguments>
1699 <types>
1700 <type name='in_out_t'/>
1701 </types>
1702 <typesupport mode="boolean" in_out_t="bool_t"/>
1703 <typesupport mode="signed 8" in_out_t="int8_t"/>
1704 <typesupport mode="signed 16" in_out_t="int16_t"/>
1705 <typesupport mode="signed 32" in_out_t="int32_t"/>
1706 <typesupport mode="fp16" in_out_t="fp16_t">
1707 <profile name="MI"/>
1708 <profile name="MT"/>
1709 </typesupport>
1710 <typesupport mode="bf16" in_out_t="bf16_t">
1711 <profile name="MI"/>
1712 <profile name="MT"/>
1713 </typesupport>
1714 <typesupport mode="fp32" in_out_t="fp32_t">
1715 <profile name="MI"/>
1716 <profile name="MT"/>
1717 </typesupport>
1718 </operator>
1719 <operator>
1720 <name>TILE</name>
1721 <arguments>
1722 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
1723 <description>Input tensor with rank from 1 to 4</description>
1724 </argument>
1725 <argument category="attribute" name="multiplies" type="int32_t" shape="[rank(shape1)]">
1726 <description>Number of times to replicate input1 in each dimension</description>
1727 </argument>
1728 <argument category="output" name="output" type="in_out_t*" shape="shape">
1729 <description>Output tensor of same type, rank as the input tensor</description>
1730 </argument>
1731 </arguments>
1732 <types>
1733 <type name='in_out_t'/>
1734 </types>
1735 <typesupport mode="boolean" in_out_t="bool_t"/>
1736 <typesupport mode="signed 8" in_out_t="int8_t"/>
1737 <typesupport mode="signed 16" in_out_t="int16_t"/>
1738 <typesupport mode="signed 32" in_out_t="int32_t"/>
1739 <typesupport mode="fp16" in_out_t="fp16_t">
1740 <profile name="MI"/>
1741 <profile name="MT"/>
1742 </typesupport>
1743 <typesupport mode="bf16" in_out_t="bf16_t">
1744 <profile name="MI"/>
1745 <profile name="MT"/>
1746 </typesupport>
1747 <typesupport mode="fp32" in_out_t="fp32_t">
1748 <profile name="MI"/>
1749 <profile name="MT"/>
1750 </typesupport>
1751 </operator>
1752 <operator>
1753 <name>TRANSPOSE</name>
1754 <arguments>
1755 <argument category="input" name="input1" type="in_out_t*" shape="shape1">
1756 <description>Input tensor with minimum rank of one.</description>
1757 </argument>
1758 <argument category="attribute" name="perms" type="int32_t" shape="[rank(input1)]">
1759 <description>List of integers of length equal to the rank of input1. Values must be valid dimensions within shape1, and may not be repeated.</description>
1760 </argument>
1761 <argument category="output" name="output" type="in_out_t*" shape="shape">
1762 <description>Output tensor of same type, rank as the input tensor</description>
1763 </argument>
1764 </arguments>
1765 <types>
1766 <type name='in_out_t'/>
1767 </types>
1768 <typesupport mode="boolean" in_out_t="bool_t"/>
1769 <typesupport mode="signed 8" in_out_t="int8_t"/>
1770 <typesupport mode="signed 16" in_out_t="int16_t"/>
1771 <typesupport mode="signed 32" in_out_t="int32_t"/>
1772 <typesupport mode="fp16" in_out_t="fp16_t">
1773 <profile name="MI"/>
1774 <profile name="MT"/>
1775 </typesupport>
1776 <typesupport mode="bf16" in_out_t="bf16_t">
1777 <profile name="MI"/>
1778 <profile name="MT"/>
1779 </typesupport>
1780 <typesupport mode="fp32" in_out_t="fp32_t">
1781 <profile name="MI"/>
1782 <profile name="MT"/>
1783 </typesupport>
1784 </operator>
1785 </operatorgroup>
1786 <operatorgroup name="scatter-gather">
1787 <operator>
1788 <name>GATHER</name>
1789 <arguments>
1790 <argument category="input" name="values" type="value_t*" shape="[N,K,C]">
1791 <description>3D value tensor</description>
1792 </argument>
1793 <argument category="input" name="indices" type="index_t*" shape="[N,W]">
1794 <description>2D index tensor</description>
1795 </argument>
1796 <argument category="output" name="output" type="value_t*" shape="[N,W,C]">
1797 <description>3D output tensor</description>
1798 </argument>
1799 </arguments>
1800 <types>
1801 <type name='index_t'/>
1802 <type name='value_t'/>
1803 </types>
1804 <typesupport mode="signed 8" index_t="int32_t" value_t="int8_t"/>
1805 <typesupport mode="signed 16" index_t="int32_t" value_t="int16_t"/>
1806 <typesupport mode="signed 32" index_t="int32_t" value_t="int32_t"/>
1807 <typesupport mode="fp16" index_t="int32_t" value_t="fp16_t">
1808 <profile name="MI"/>
1809 <profile name="MT"/>
1810 </typesupport>
1811 <typesupport mode="bf16" index_t="int32_t" value_t="bf16_t">
1812 <profile name="MI"/>
1813 <profile name="MT"/>
1814 </typesupport>
1815 <typesupport mode="fp32" index_t="int32_t" value_t="fp32_t">
1816 <profile name="MI"/>
1817 <profile name="MT"/>
1818 </typesupport>
1819 </operator>
1820 <operator>
1821 <name>SCATTER</name>
1822 <arguments>
1823 <argument category="input" name="values_in" type="value_t*" shape="[N,K,C]">
1824 <description>3D values in tensor</description>
1825 </argument>
1826 <argument category="input" name="indices" type="index_t*" shape="[N,W]">
1827 <description>2D index tensor</description>
1828 </argument>
1829 <argument category="input" name="input" type="value_t*" shape="[N,W,C]">
1830 <description>3D input tensor</description>
1831 </argument>
1832 <argument category="output" name="values_out" type="value_t*" shape="[N,K,C]">
1833 <description>3D output tensor</description>
1834 </argument>
1835 </arguments>
1836 <types>
1837 <type name='index_t'/>
1838 <type name='value_t'/>
1839 </types>
1840 <typesupport mode="signed 8" index_t="int32_t" value_t="int8_t"/>
1841 <typesupport mode="signed 16" index_t="int32_t" value_t="int16_t"/>
1842 <typesupport mode="signed 32" index_t="int32_t" value_t="int32_t"/>
1843 <typesupport mode="fp16" index_t="int32_t" value_t="fp16_t">
1844 <profile name="MI"/>
1845 <profile name="MT"/>
1846 </typesupport>
1847 <typesupport mode="bf16" index_t="int32_t" value_t="bf16_t">
1848 <profile name="MI"/>
1849 <profile name="MT"/>
1850 </typesupport>
1851 <typesupport mode="fp32" index_t="int32_t" value_t="fp32_t">
1852 <profile name="MI"/>
1853 <profile name="MT"/>
1854 </typesupport>
1855 </operator>
1856 </operatorgroup>
1857 <operatorgroup name="image">
1858 <operator>
1859 <name>RESIZE</name>
1860 <arguments>
1861 <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,C]">
1862 <description>Input tensor</description>
1863 </argument>
1864 <argument category="attribute" name="scale" type="int16_t*" shape="[4]">
1865 <description>[scale_y_n, scale_y_d, scale_x_n, scale_x_d]</description>
1866 </argument>
1867 <argument category="attribute" name="offset" type="int16_t*" shape="[2]">
1868 <description>[offset_y, offset_x]</description>
1869 </argument>
1870 <argument category="attribute" name="border" type="int32_t*" shape="[2]">
1871 <description>[border_y, border_x]</description>
1872 </argument>
1873 <argument category="attribute" name="mode" type="mode_t" shape="-">
1874 <description>BILINEAR or NEAREST</description>
1875 </argument>
1876 <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,C]">
1877 <description>Output tensor</description>
1878 </argument>
1879 </arguments>
1880 <types>
1881 <type name='resize_t'/>
1882 <type name='in_t'/>
1883 <type name='out_t'/>
1884 </types>
1885 <typesupport mode="signed 8, bilinear" resize_t="int16_t" in_t="int8_t" out_t="int32_t"/>
1886 <typesupport mode="signed 8, nearest" resize_t="int16_t" in_t="int8_t" out_t="int8_t"/>
1887 <typesupport mode="signed 16, bilinear" resize_t="int16_t" in_t="int16_t" out_t="int48_t"/>
1888 <typesupport mode="signed 16, nearest" resize_t="int16_t" in_t="int16_t" out_t="int16_t"/>
1889 <typesupport mode="fp16" resize_t="fp16_t" in_t="fp32_t" out_t="fp16_t">
1890 <profile name="MI"/>
1891 <profile name="MT"/>
1892 </typesupport>
1893 <typesupport mode="bf16" resize_t="fp32_t" in_t="bf16_t" out_t="bf16_t">
1894 <profile name="MI"/>
1895 <profile name="MT"/>
1896 </typesupport>
1897 <typesupport mode="fp32" resize_t="fp32_t" in_t="fp32_t" out_t="fp32_t">
1898 <profile name="MI"/>
1899 <profile name="MT"/>
1900 </typesupport>
1901 </operator>
1902 </operatorgroup>
1903 <operatorgroup name="type-conversion">
1904 <operator>
1905 <name>CAST</name>
1906 <arguments>
1907 <argument category="input" name="input" type="in_t" shape="shape">
1908 <description>Input tensor</description>
1909 </argument>
1910 <argument category="output" name="output" type="out_t" shape="shape">
1911 <description>Output tensor</description>
1912 </argument>
1913 </arguments>
1914 <types>
1915 <type name='in_t'/>
1916 <type name='out_t'/>
1917 </types>
1918 <typesupport mode="bool to signed 8" in_t="bool_t" out_t="int8_t"/>
1919 <typesupport mode="bool to signed 16" in_t="bool_t" out_t="int16_t"/>
1920 <typesupport mode="bool to signed 32" in_t="bool_t" out_t="int32_t"/>
1921 <typesupport mode="signed 8 to bool" in_t="int8_t" out_t="bool_t"/>
1922 <typesupport mode="signed 8 to signed 16" in_t="int8_t" out_t="int16_t"/>
1923 <typesupport mode="signed 8 to signed 32" in_t="int8_t" out_t="int32_t"/>
1924 <typesupport mode="signed 8 to fp16" in_t="int8_t" out_t="fp16_t">
1925 <profile name="MI"/>
1926 <profile name="MT"/>
1927 </typesupport>
1928 <typesupport mode="signed 8 to bf16" in_t="int8_t" out_t="bf16_t">
1929 <profile name="MI"/>
1930 <profile name="MT"/>
1931 </typesupport>
1932 <typesupport mode="signed 8 to fp32" in_t="int8_t" out_t="fp32_t">
1933 <profile name="MI"/>
1934 <profile name="MT"/>
1935 </typesupport>
1936 <typesupport mode="signed 16 to bool" in_t="int16_t" out_t="bool_t"/>
1937 <typesupport mode="signed 16 to signed 8" in_t="int16_t" out_t="int8_t"/>
1938 <typesupport mode="signed 16 to signed 32" in_t="int16_t" out_t="int32_t"/>
1939 <typesupport mode="signed 16 to fp16" in_t="int16_t" out_t="fp16_t">
1940 <profile name="MI"/>
1941 <profile name="MT"/>
1942 </typesupport>
1943 <typesupport mode="signed 16 to bf16" in_t="int16_t" out_t="bf16_t">
1944 <profile name="MI"/>
1945 <profile name="MT"/>
1946 </typesupport>
1947 <typesupport mode="signed 16 to fp32" in_t="int16_t" out_t="fp32_t">
1948 <profile name="MI"/>
1949 <profile name="MT"/>
1950 </typesupport>
1951 <typesupport mode="signed 32 to bool" in_t="int32_t" out_t="bool_t"/>
1952 <typesupport mode="signed 32 to signed 8" in_t="int32_t" out_t="int8_t"/>
1953 <typesupport mode="signed 32 to signed 16" in_t="int32_t" out_t="int16_t"/>
1954 <typesupport mode="signed 32 to fp16" in_t="int32_t" out_t="fp16_t">
1955 <profile name="MI"/>
1956 <profile name="MT"/>
1957 </typesupport>
1958 <typesupport mode="signed 32 to bf16" in_t="int32_t" out_t="bf16_t">
1959 <profile name="MI"/>
1960 <profile name="MT"/>
1961 </typesupport>
1962 <typesupport mode="signed 32 to fp32" in_t="int32_t" out_t="fp32_t">
1963 <profile name="MI"/>
1964 <profile name="MT"/>
1965 </typesupport>
1966 <typesupport mode="bf16 to signed 8" in_t="bf16_t" out_t="int8_t">
1967 <profile name="MI"/>
1968 <profile name="MT"/>
1969 </typesupport>
1970 <typesupport mode="bf16 to signed 16" in_t="bf16_t" out_t="int16_t">
1971 <profile name="MI"/>
1972 <profile name="MT"/>
1973 </typesupport>
1974 <typesupport mode="bf16 to signed 32" in_t="bf16_t" out_t="int32_t">
1975 <profile name="MI"/>
1976 <profile name="MT"/>
1977 </typesupport>
1978 <typesupport mode="fp16 to signed 8" in_t="fp16_t" out_t="int8_t">
1979 <profile name="MI"/>
1980 <profile name="MT"/>
1981 </typesupport>
1982 <typesupport mode="fp16 to signed 16" in_t="fp16_t" out_t="int16_t">
1983 <profile name="MI"/>
1984 <profile name="MT"/>
1985 </typesupport>
1986 <typesupport mode="fp16 to signed 32" in_t="fp16_t" out_t="int32_t">
1987 <profile name="MI"/>
1988 <profile name="MT"/>
1989 </typesupport>
1990 <typesupport mode="fp32 to signed 8" in_t="fp32_t" out_t="int8_t">
1991 <profile name="MI"/>
1992 <profile name="MT"/>
1993 </typesupport>
1994 <typesupport mode="fp32 to signed 16" in_t="fp32_t" out_t="int16_t">
1995 <profile name="MI"/>
1996 <profile name="MT"/>
1997 </typesupport>
1998 <typesupport mode="fp32 to signed 32" in_t="fp32_t" out_t="int32_t">
1999 <profile name="MI"/>
2000 <profile name="MT"/>
2001 </typesupport>
2002 </operator>
2003 <operator>
2004 <name>RESCALE</name>
2005 <arguments>
2006 <argument category="input" name="input" type="in_t" shape="shape">
Dominic Symes8783adb2022-07-27 12:53:11 +01002007 <description>Input tensor</description>
Eric Kunze58098a72022-08-05 15:40:12 -07002008 </argument>
2009 <argument category="output" name="output" type="out_t" shape="shape">
2010 <description>Output tensor with the same shape as input</description>
2011 </argument>
2012 <argument category="attribute" name="input_zp" type="in_t" shape="-">
2013 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
2014 </argument>
2015 <argument category="attribute" name="output_zp" type="out_t" shape="-">
2016 <description>Output tensor zero point. Must be zero for non-int8 types.</description>
2017 </argument>
2018 <argument category="input(MT)|attribute(BI,MI)" name="multiplier" type="mul_t*" shape="[NC]">
2019 <description>Scaling multiplier array</description>
2020 </argument>
2021 <argument category="input(MT)|attribute(BI,MI)" name="shift" type="uint6_t*" shape="[NC]">
2022 <description>Scaling shift array</description>
2023 </argument>
2024 <argument category="attribute" name="scale32" type="bool_t" shape="-">
2025 <description>if (scale32) mul_t=int32_t else mul_t=int16_t</description>
2026 </argument>
2027 <argument category="attribute" name="double_round" type="bool_t" shape="-">
2028 <description>Select double round mode</description>
2029 </argument>
2030 <argument category="attribute" name="per_channel" type="bool_t" shape="-">
Dominic Symes8783adb2022-07-27 12:53:11 +01002031 <description>if (per_channel) NC=shape[rank(shape)-1] else NC=1</description>
Eric Kunze58098a72022-08-05 15:40:12 -07002032 </argument>
2033 </arguments>
2034 <types>
2035 <type name='in_t'/>
2036 <type name='out_t'/>
2037 </types>
2038 <typesupport mode="signed 8 to signed 8" in_t="int8_t" out_t="int8_t"/>
2039 <typesupport mode="signed 8 to signed 16" in_t="int8_t" out_t="int16_t"/>
2040 <typesupport mode="signed 8 to signed 32" in_t="int8_t" out_t="int32_t"/>
2041 <typesupport mode="signed 8 to unsigned 8" in_t="int8_t" out_t="uint8_t"/>
2042 <typesupport mode="signed 16 to signed 8" in_t="int16_t" out_t="int8_t"/>
2043 <typesupport mode="signed 16 to signed 16" in_t="int16_t" out_t="int16_t"/>
2044 <typesupport mode="signed 16 to signed 32" in_t="int16_t" out_t="int32_t"/>
2045 <typesupport mode="signed 16 to unsigned 8" in_t="int16_t" out_t="uint8_t"/>
2046 <typesupport mode="signed 16 to unsigned 16" in_t="int16_t" out_t="uint16_t"/>
2047 <typesupport mode="signed 32 to signed 8" in_t="int32_t" out_t="int8_t"/>
2048 <typesupport mode="signed 32 to signed 16" in_t="int32_t" out_t="int16_t"/>
2049 <typesupport mode="signed 32 to signed 32" in_t="int32_t" out_t="int32_t"/>
2050 <typesupport mode="signed 48 to signed 8" in_t="int48_t" out_t="int8_t"/>
2051 <typesupport mode="signed 48 to signed 16" in_t="int48_t" out_t="int16_t"/>
2052 <typesupport mode="signed 48 to signed 32" in_t="int48_t" out_t="int32_t"/>
2053 <typesupport mode="unsigned 8 to signed 8" in_t="uint8_t" out_t="int8_t"/>
2054 <typesupport mode="unsigned 8 to signed 16" in_t="uint8_t" out_t="int16_t"/>
2055 <typesupport mode="unsigned 16 to signed 16" in_t="uint16_t" out_t="int16_t"/>
2056 </operator>
2057 </operatorgroup>
2058 <operatorgroup name="data-node">
2059 <operator>
2060 <name>CONST</name>
2061 <arguments>
2062 <argument category="attribute" name="values" type="out_t*" shape="shape">
2063 <description>Constant values</description>
2064 </argument>
2065 <argument category="output" name="output" type="out_t*" shape="shape">
2066 <description>Output tensor of the same type, size as the input tensor</description>
2067 </argument>
2068 </arguments>
2069 <types>
2070 <type name='out_t' />
2071 </types>
2072 <typesupport mode="Boolean" out_t="bool_t" />
2073 <typesupport mode="signed 8" out_t="int8_t" />
2074 <typesupport mode="signed 16" out_t="int16_t" />
2075 <typesupport mode="signed 32" out_t="int32_t" />
2076 <typesupport mode="fp16" out_t="fp16_t" >
2077 <profile name="MI"/>
2078 <profile name="MT"/>
2079 </typesupport>
2080 <typesupport mode="bf16" out_t="bf16_t" >
2081 <profile name="MI"/>
2082 <profile name="MT"/>
2083 </typesupport>
2084 <typesupport mode="fp32" out_t="fp32_t" >
2085 <profile name="MI"/>
2086 <profile name="MT"/>
2087 </typesupport>
2088 </operator>
2089 <operator>
2090 <name>IDENTITY</name>
2091 <arguments>
2092 <argument category="input" name="input1" type="in_out_t*" shape="shape">
2093 <description>Input tensor</description>
2094 </argument>
2095 <argument category="output" name="output" type="in_out_t*" shape="shape">
2096 <description>Output tensor of the same type, size as the input tensor</description>
2097 </argument>
2098 </arguments>
2099 <types>
2100 <type name='in_out_t' />
2101 </types>
2102 <typesupport mode="Boolean" in_out_t="bool_t" />
2103 <typesupport mode="signed 8" in_out_t="int8_t" />
2104 <typesupport mode="signed 16" in_out_t="int16_t" />
2105 <typesupport mode="signed 32" in_out_t="int32_t" />
2106 <typesupport mode="fp16" in_out_t="fp16_t" >
2107 <profile name="MI"/>
2108 <profile name="MT"/>
2109 </typesupport>
2110 <typesupport mode="bf16" in_out_t="bf16_t" >
2111 <profile name="MI"/>
2112 <profile name="MT"/>
2113 </typesupport>
2114 <typesupport mode="fp32" in_out_t="fp32_t" >
2115 <profile name="MI"/>
2116 <profile name="MT"/>
2117 </typesupport>
2118 </operator>
2119 </operatorgroup>
2120 <operatorgroup name="control-flow">
2121 <operator>
2122 <name>COND_IF</name>
2123 <arguments>
2124 <argument category="input" name="input_list" type="tensor_list_t" shape="-">
2125 <description>List of input tensors</description>
2126 </argument>
2127 <argument category="input" name="condition" type="bool_t" shape="-">
2128 <description>Input condition as rank-0 tensor</description>
2129 </argument>
2130 <argument category="attribute" name="then_graph" type="tosa_graph_t" shape="-">
2131 <description>TOSA graph to execute if condition is true</description>
2132 </argument>
2133 <argument category="attribute" name="else_graph" type="tosa_graph_t" shape="-">
2134 <description>TOSA graph to execute if condition is false</description>
2135 </argument>
2136 <argument category="output" name="output_list" type="tensor_list_t" shape="-">
2137 <description>List of output tensors</description>
2138 </argument>
2139 </arguments>
2140 </operator>
2141 <operator>
2142 <name>WHILE_LOOP</name>
2143 <arguments>
2144 <argument category="input" name="input_list" type="tensor_list_t" shape="-">
2145 <description>List of input tensors</description>
2146 </argument>
2147 <argument category="attribute" name="cond_graph" type="tosa_graph_t" shape="-">
2148 <description>TOSA graph to evaluate the condition</description>
2149 </argument>
2150 <argument category="attribute" name="body_graph" type="tosa_graph_t" shape="-">
2151 <description>TOSA graph to execute the loop body</description>
2152 </argument>
2153 <argument category="output" name="output_list" type="tensor_list_t" shape="-">
2154 <description>List of output tensors</description>
2155 </argument>
2156 </arguments>
2157 </operator>
2158 </operatorgroup>
2159 </operators>
2160</tosa>