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