blob: ed5a25b5bd590b87defab8fd922a079a6a526822 [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>
Eric Kunze629baef2023-09-13 16:28:41 -07004 <version major="0" minor="90" patch="0" draft="true"/>
Eric Kunze58098a72022-08-05 15:40:12 -07005 <profiles>
6 <profile name="BI">Base Inference</profile>
7 <profile name="MI">Main Inference</profile>
8 <profile name="MT">Main Training</profile>
9 </profiles>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000010 <levels>
Dominic Symes7b0f1c92023-07-20 14:26:38 +010011 <level name="none" max_rank="32" max_kernel="2147483647" max_stride="2147483647" max_scale="2048" max_log2_size="63" max_nesting="256">No level</level>
Eric Kunzee1f517c2023-08-09 16:56:20 -070012 <level name="8K" max_rank="6" max_kernel="8192" max_stride="8192" max_scale="256" max_log2_size="31" max_nesting="6">Level 8K</level>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000013 </levels>
Eric Kunze58098a72022-08-05 15:40:12 -070014 <operators>
15 <operatorgroup name="tensor">
16 <operator>
17 <name>ARGMAX</name>
18 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +010019 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_t">
Jerry Gef28bd0a2023-03-21 18:25:00 +000020 <description>Input tensor</description>
21 <levellimit value="rank(shape1)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -080022 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -070023 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -070024 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze42085e32023-01-09 11:16:51 -080025 <description>Axis in range from 0 to rank(shape1) - 1</description>
Kevin Petit5333c252023-05-16 09:08:48 +010026 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -070027 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +010028 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze42085e32023-01-09 11:16:51 -080029 <description>Output tensor, with rank = rank(shape1) - 1</description>
30 <rank min="0" max="MAX_RANK - 1"/>
Eric Kunze58098a72022-08-05 15:40:12 -070031 </argument>
32 </arguments>
33 <types>
34 <type name='in_t' />
35 <type name='out_t' />
36 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -070037 <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t"/>
38 <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t" />
39 <typesupport mode="fp16" in_t="fp16_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070040 <profile name="MI"/>
41 <profile name="MT"/>
42 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -070043 <typesupport mode="bf16" in_t="bf16_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070044 <profile name="MI"/>
45 <profile name="MT"/>
46 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -070047 <typesupport mode="fp32" in_t="fp32_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070048 <profile name="MI"/>
49 <profile name="MT"/>
50 </typesupport>
51 </operator>
52 <operator>
53 <name>AVG_POOL2D</name>
54 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +010055 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,C]" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -080056 <description>Input tensor</description>
57 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -070058 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -070059 <argument category="attribute" name="kernel" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070060 <description>[kernel_y, kernel_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000061 <levellimit value="kernel_y" limit="MAX_KERNEL"/>
62 <levellimit value="kernel_x" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -080063 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -070064 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -070065 <argument category="attribute" name="stride" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070066 <description>[stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000067 <levellimit value="stride_y" limit="MAX_STRIDE"/>
68 <levellimit value="stride_x" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -080069 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -070070 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -070071 <argument category="attribute" name="pad" type="tensor_t" shape="[4]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -070072 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000073 <levellimit value="pad_top" limit="MAX_KERNEL"/>
74 <levellimit value="pad_bottom" limit="MAX_KERNEL"/>
75 <levellimit value="pad_left" limit="MAX_KERNEL"/>
76 <levellimit value="pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -080077 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -070078 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +010079 <argument category="attribute" name="acc_size" type="tensor_t" shape="-" tensor-element-type="acc_size_t">
Eric Kunze87bf3092023-01-04 16:18:43 -080080 <description>Enumerated type, must be one of INT32, FP16, FP32, as defined in the Supported Data Types table for this operation</description>
Kevin Petit5333c252023-05-16 09:08:48 +010081 <rank min="0" max="0"/>
Eric Kunze87bf3092023-01-04 16:18:43 -080082 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +010083 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -070084 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +010085 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -070086 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +010087 <argument category="attribute" name="output_zp" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -070088 <description>Output tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +010089 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -070090 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +010091 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -070092 <description>Output tensor 4D</description>
Eric Kunze42085e32023-01-09 11:16:51 -080093 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -070094 </argument>
95 </arguments>
96 <types>
97 <type name='in_out_t' />
98 <type name='acc_t' />
99 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700100 <typesupport mode="signed 8 with int32 accumulate" in_out_t="i8_t" acc_t="i32_t" />
101 <typesupport mode="signed 16 with int32 accumulate" in_out_t="i16_t" acc_t="i32_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700102 <typesupport mode="fp16 with fp16 accumulate" in_out_t="fp16_t" acc_t="fp16_t">
103 <profile name="MI"/>
104 <profile name="MT"/>
105 </typesupport>
106 <typesupport mode="fp16 with fp32 accumulate" in_out_t="fp16_t" acc_t="fp32_t">
107 <profile name="MI"/>
108 <profile name="MT"/>
109 </typesupport>
110 <typesupport mode="bf16 with fp32 accumulate" in_out_t="bf16_t" acc_t="fp32_t">
111 <profile name="MI"/>
112 <profile name="MT"/>
113 </typesupport>
114 <typesupport mode="fp32 with fp32 accumulate" in_out_t="fp32_t" acc_t="fp32_t">
115 <profile name="MI"/>
116 <profile name="MT"/>
117 </typesupport>
118 </operator>
119 <operator>
120 <name>CONV2D</name>
121 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100122 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,IC]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700123 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800124 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700125 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100126 <argument category="input" name="weight" type="tensor_t" shape="[OC,KH,KW,IC]" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700127 <description>Weight kernel size KH x KW</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000128 <levellimit value="dilation_y * KH" limit="MAX_KERNEL"/>
129 <levellimit value="dilation_x * KW" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800130 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700131 </argument>
Dominic Symes12ab5da2023-08-04 17:47:29 +0100132 <argument category="input" name="bias" type="tensor_t" shape="[BC]" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700133 <description>Per output channel bias data. +
134 Bias data will be broadcast if BC == 1.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800135 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700136 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700137 <argument category="attribute" name="pad" type="tensor_t" shape="[4]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700138 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000139 <levellimit value="pad_top" limit="MAX_KERNEL"/>
140 <levellimit value="pad_bottom" limit="MAX_KERNEL"/>
141 <levellimit value="pad_left" limit="MAX_KERNEL"/>
142 <levellimit value="pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800143 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700144 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700145 <argument category="attribute" name="stride" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700146 <description>[stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000147 <levellimit value="stride_y" limit="MAX_STRIDE"/>
148 <levellimit value="stride_x" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800149 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700150 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700151 <argument category="attribute" name="dilation" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700152 <description>[dilation_y, dilation_x]</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800153 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700154 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100155 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700156 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100157 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700158 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100159 <argument category="attribute" name="weight_zp" type="tensor_t" shape="-" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700160 <description>Weight zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100161 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700162 </argument>
Dominic Symesb5b06782023-07-27 11:50:57 +0100163 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
164 <description>
165 This optional attribute affects the floating-point compliance error bound.
166 The default of false allows for direct and transform based, fast convolution algorithms.
167 Only set to true if direct dot-product calculation precision is required.
168 </description>
169 <rank min="0" max="0"/>
170 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100171 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,OC]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700172 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800173 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700174 </argument>
175 </arguments>
176 <types>
177 <type name='in_t' />
178 <type name='weight_t' />
179 <type name='out_t' />
180 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700181 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
182 <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
183 <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700184 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
185 <profile name="MI"/>
186 <profile name="MT"/>
187 </typesupport>
188 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
189 <profile name="MI"/>
190 <profile name="MT"/>
191 </typesupport>
192 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
193 <profile name="MI"/>
194 <profile name="MT"/>
195 </typesupport>
196 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
197 <profile name="MI"/>
198 <profile name="MT"/>
199 </typesupport>
200 </operator>
201 <operator>
202 <name>CONV3D</name>
203 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100204 <argument category="input" name="input" type="tensor_t" shape="[N,ID,IH,IW,IC]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700205 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800206 <rank min="5" max="5"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700207 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100208 <argument category="input" name="weight" type="tensor_t" shape="[OC,KD,KH,KW,IC]" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700209 <description>Weight kernel size KDxKHxKW</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000210 <levellimit value="dilation_d * KD" limit="MAX_KERNEL"/>
211 <levellimit value="dilation_y * KH" limit="MAX_KERNEL"/>
212 <levellimit value="dilation_x * KW" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800213 <rank min="5" max="5"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700214 </argument>
Dominic Symes12ab5da2023-08-04 17:47:29 +0100215 <argument category="input" name="bias" type="tensor_t" shape="[BC]" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700216 <description>Per output channel bias data. +
217 Bias data will be broadcast if BC == 1.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800218 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700219 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700220 <argument category="attribute" name="pad" type="tensor_t" shape="[6]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700221 <description>[pad_d0, pad_d1, pad_top, pad_bottom, pad_left, pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000222 <levellimit value="pad_d0" limit="MAX_KERNEL"/>
223 <levellimit value="pad_d1" limit="MAX_KERNEL"/>
224 <levellimit value="pad_top" limit="MAX_KERNEL"/>
225 <levellimit value="pad_bottom" limit="MAX_KERNEL"/>
226 <levellimit value="pad_left" limit="MAX_KERNEL"/>
227 <levellimit value="pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800228 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700229 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700230 <argument category="attribute" name="stride" type="tensor_t" shape="[3]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700231 <description>[stride_d, stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000232 <levellimit value="stride_y" limit="MAX_STRIDE"/>
233 <levellimit value="stride_x" limit="MAX_STRIDE"/>
234 <levellimit value="stride_d" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800235 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700236 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700237 <argument category="attribute" name="dilation" type="tensor_t" shape="[3]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700238 <description>[dilation_d, dilation_y, dilation_x]</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800239 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700240 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100241 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700242 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100243 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700244 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100245 <argument category="attribute" name="weight_zp" type="tensor_t" shape="-" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700246 <description>Weight zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100247 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700248 </argument>
Dominic Symesb5b06782023-07-27 11:50:57 +0100249 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
250 <description>
251 This optional attribute affects the floating-point compliance error bound.
252 The default of false allows for direct and transform based, fast convolution algorithms.
253 Only set to true if direct dot-product calculation precision is required.
254 </description>
255 <rank min="0" max="0"/>
256 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100257 <argument category="output" name="output" type="tensor_t" shape="[N,OD,OH,OW,OC]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700258 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800259 <rank min="5" max="5"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700260 </argument>
261 </arguments>
262 <types>
263 <type name='in_t' />
264 <type name='weight_t' />
265 <type name='out_t' />
266 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700267 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
268 <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
269 <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700270 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
271 <profile name="MI"/>
272 <profile name="MT"/>
273 </typesupport>
274 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
275 <profile name="MI"/>
276 <profile name="MT"/>
277 </typesupport>
278 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
279 <profile name="MI"/>
280 <profile name="MT"/>
281 </typesupport>
282 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
283 <profile name="MI"/>
284 <profile name="MT"/>
285 </typesupport>
286 </operator>
287 <operator>
288 <name>DEPTHWISE_CONV2D</name>
289 <arguments>
Kevin Petit75920b12024-01-23 19:12:14 +0000290 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,C]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700291 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800292 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700293 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100294 <argument category="input" name="weight" type="tensor_t" shape="[KH,KW,C,M]" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700295 <description>Weight kernel size KH x KW</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000296 <levellimit value="dilation_y * KH" limit="MAX_KERNEL"/>
297 <levellimit value="dilation_x * KW" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800298 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700299 </argument>
Dominic Symes12ab5da2023-08-04 17:47:29 +0100300 <argument category="input" name="bias" type="tensor_t" shape="[BC]" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700301 <description>Per output channel bias data. +
302 Bias data will be broadcast if BC == 1.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800303 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700304 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700305 <argument category="attribute" name="pad" type="tensor_t" shape="[4]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700306 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000307 <levellimit value="pad_top" limit="MAX_KERNEL"/>
308 <levellimit value="pad_bottom" limit="MAX_KERNEL"/>
309 <levellimit value="pad_left" limit="MAX_KERNEL"/>
310 <levellimit value="pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800311 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700312 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700313 <argument category="attribute" name="stride" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700314 <description>[stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000315 <levellimit value="stride_y" limit="MAX_STRIDE"/>
316 <levellimit value="stride_x" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800317 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700318 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700319 <argument category="attribute" name="dilation" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700320 <description>[dilation_y, dilation_x]</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800321 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700322 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100323 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700324 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100325 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700326 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100327 <argument category="attribute" name="weight_zp" type="tensor_t" shape="-" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700328 <description>Weight zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100329 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700330 </argument>
Dominic Symesb5b06782023-07-27 11:50:57 +0100331 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
332 <description>
333 This optional attribute affects the floating-point compliance error bound.
334 The default of false allows for direct and transform based, fast convolution algorithms.
335 Only set to true if direct dot-product calculation precision is required.
336 </description>
337 <rank min="0" max="0"/>
338 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100339 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,C*M]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700340 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800341 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700342 </argument>
343 </arguments>
344 <types>
345 <type name='in_t' />
346 <type name='weight_t' />
347 <type name='out_t' />
348 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700349 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
350 <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
351 <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700352 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
353 <profile name="MI"/>
354 <profile name="MT"/>
355 </typesupport>
356 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
357 <profile name="MI"/>
358 <profile name="MT"/>
359 </typesupport>
360 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
361 <profile name="MI"/>
362 <profile name="MT"/>
363 </typesupport>
364 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
365 <profile name="MI"/>
366 <profile name="MT"/>
367 </typesupport>
368 </operator>
369 <operator>
370 <name>FFT2D</name>
371 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100372 <argument category="input" name="input_real" type="tensor_t" shape="[N,H,W]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700373 <description>Real part of the complex input. H,W must be powers of two.</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000374 <levellimit value="H" limit="MAX_KERNEL"/>
375 <levellimit value="W" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800376 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700377 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100378 <argument category="input" name="input_imag" type="tensor_t" shape="[N,H,W]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700379 <description>Imaginary part of the complex input. H,W must be powers of two.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800380 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700381 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100382 <argument category="attribute" name="inverse" type="tensor_t" shape="-" tensor-element-type="bool_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700383 <description>false for forward FFT, true for inverse FFT</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100384 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700385 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100386 <argument category="output" name="output_real" type="tensor_t" shape="[N,H,W]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700387 <description>Real part of the complex output.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800388 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700389 </argument>
Dominic Symesb5b06782023-07-27 11:50:57 +0100390 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
391 <description>
392 This optional attribute affects the floating-point compliance error bound.
393 The default of false allows for direct and transform based, fast convolution algorithms.
394 Only set to true if direct dot-product calculation precision is required.
395 </description>
396 <rank min="0" max="0"/>
397 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100398 <argument category="output" name="output_imag" type="tensor_t" shape="[N,H,W]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700399 <description>Imaginary part of the complex output.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800400 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700401 </argument>
402 </arguments>
403 <types>
404 <type name='in_out_t' />
405 </types>
406 <typesupport mode="fp32" in_out_t="fp32_t" >
407 <profile name="MI"/>
408 <profile name="MT"/>
409 </typesupport>
410 </operator>
411 <operator>
412 <name>FULLY_CONNECTED</name>
413 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100414 <argument category="input" name="input" type="tensor_t" shape="[N,IC]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700415 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800416 <rank min="2" max="2"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700417 </argument>
Dominic Symes14aa6202023-06-14 18:11:19 +0100418 <argument category="input" name="weight" type="tensor_t" shape="[OC,IC]" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700419 <description>Weights</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800420 <rank min="2" max="2"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700421 </argument>
Dominic Symes12ab5da2023-08-04 17:47:29 +0100422 <argument category="input" name="bias" type="tensor_t" shape="[BC]" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700423 <description>Per output channel bias data. +
424 Bias data will be broadcast if BC == 1.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800425 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700426 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100427 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700428 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100429 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700430 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100431 <argument category="attribute" name="weight_zp" type="tensor_t" shape="-" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700432 <description>Weight zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100433 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700434 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100435 <argument category="output" name="output" type="tensor_t" shape="[N,OC]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700436 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800437 <rank min="2" max="2"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700438 </argument>
439 </arguments>
440 <types>
441 <type name='in_t' />
442 <type name='weight_t' />
443 <type name='out_t' />
444 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700445 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
446 <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
447 <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700448 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
449 <profile name="MI"/>
450 <profile name="MT"/>
451 </typesupport>
452 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
453 <profile name="MI"/>
454 <profile name="MT"/>
455 </typesupport>
456 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
457 <profile name="MI"/>
458 <profile name="MT"/>
459 </typesupport>
460 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
461 <profile name="MI"/>
462 <profile name="MT"/>
463 </typesupport>
464 </operator>
465 <operator>
466 <name>MATMUL</name>
467 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100468 <argument category="input" name="A" type="tensor_t" shape="[N,H,C]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700469 <description>Input tensor A, N matrices of size HxC</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800470 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700471 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100472 <argument category="input" name="B" type="tensor_t" shape="[N,C,W]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700473 <description>Input tensor B, N matrices of size CxW</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800474 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700475 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100476 <argument category="attribute" name="A_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700477 <description>Input tensor A zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100478 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700479 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100480 <argument category="attribute" name="B_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700481 <description>Input tensor B zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100482 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700483 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100484 <argument category="output" name="output" type="tensor_t" shape="[N,H,W]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700485 <description>Output tensor, N matrices of size HxW</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800486 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700487 </argument>
488 </arguments>
489 <types>
490 <type name='in_t' />
491 <type name='out_t' />
492 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700493 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" out_t="i32_t" />
494 <typesupport mode="signed 16x16 with int48 accumulate" in_t="i16_t" out_t="i48_t" />
Eric Kunze74a37ca2022-08-24 08:56:58 -0700495 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700496 <profile name="MI"/>
497 <profile name="MT"/>
498 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700499 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700500 <profile name="MI"/>
501 <profile name="MT"/>
502 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700503 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700504 <profile name="MI"/>
505 <profile name="MT"/>
506 </typesupport>
Eric Kunze74a37ca2022-08-24 08:56:58 -0700507 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700508 <profile name="MI"/>
509 <profile name="MT"/>
510 </typesupport>
511 </operator>
512 <operator>
513 <name>MAX_POOL2D</name>
514 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100515 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700516 <description>Input tensor 4D</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800517 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700518 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700519 <argument category="attribute" name="kernel" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700520 <description>[kernel_y, kernel_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000521 <levellimit value="kernel_y" limit="MAX_KERNEL"/>
522 <levellimit value="kernel_x" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800523 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700524 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700525 <argument category="attribute" name="stride" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700526 <description>[stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000527 <levellimit value="stride_y" limit="MAX_STRIDE"/>
528 <levellimit value="stride_x" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800529 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700530 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700531 <argument category="attribute" name="pad" type="tensor_t" shape="[4]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700532 <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000533 <levellimit value="pad_top" limit="MAX_KERNEL"/>
534 <levellimit value="pad_bottom" limit="MAX_KERNEL"/>
535 <levellimit value="pad_left" limit="MAX_KERNEL"/>
536 <levellimit value="pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800537 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700538 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100539 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700540 <description>Output tensor 4D</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800541 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700542 </argument>
543 </arguments>
544 <types>
545 <type name='in_out_t' />
546 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700547 <typesupport mode="signed 8" in_out_t="i8_t" />
548 <typesupport mode="signed 16" in_out_t="i16_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700549 <typesupport mode="fp16" in_out_t="fp16_t" >
550 <profile name="MI"/>
551 <profile name="MT"/>
552 </typesupport>
553 <typesupport mode="bf16" in_out_t="bf16_t" >
554 <profile name="MI"/>
555 <profile name="MT"/>
556 </typesupport>
557 <typesupport mode="fp32" in_out_t="fp32_t" >
558 <profile name="MI"/>
559 <profile name="MT"/>
560 </typesupport>
561 </operator>
562 <operator>
563 <name>RFFT2D</name>
564 <arguments>
Kevin Petit75920b12024-01-23 19:12:14 +0000565 <argument category="input" name="input_real" type="tensor_t" shape="[N,H,W]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700566 <description>Real input. H,W must be powers of two.</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000567 <levellimit value="H" limit="MAX_KERNEL"/>
568 <levellimit value="W" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800569 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700570 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100571 <argument category="output" name="output_real" type="tensor_t" shape="[N,H,W/2 + 1]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700572 <description>Real part of the complex output</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800573 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700574 </argument>
Dominic Symes8bf6e712023-09-07 11:10:59 +0100575 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
576 <description>
577 This optional attribute affects the floating-point compliance error bound.
578 The default of false allows for direct and transform based, fast convolution algorithms.
579 Only set to true if direct dot-product calculation precision is required.
580 </description>
581 <rank min="0" max="0"/>
582 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100583 <argument category="output" name="output_imag" type="tensor_t" shape="[N,H,W/2 + 1]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700584 <description>Imaginary part of the complex output.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800585 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700586 </argument>
587 </arguments>
588 <types>
589 <type name='in_out_t' />
590 </types>
591 <typesupport mode="fp32" in_out_t="fp32_t" >
592 <profile name="MI"/>
593 <profile name="MT"/>
594 </typesupport>
595 </operator>
596 <operator>
597 <name>TRANSPOSE_CONV2D</name>
598 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100599 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,IC]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700600 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800601 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700602 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100603 <argument category="input" name="weight" type="tensor_t" shape="[OC,KH,KW,IC]" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700604 <description>Weight kernel size KH x KW</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000605 <levellimit value="KH" limit="MAX_KERNEL"/>
606 <levellimit value="KW" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800607 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700608 </argument>
Dominic Symes12ab5da2023-08-04 17:47:29 +0100609 <argument category="input" name="bias" type="tensor_t" shape="[BC]" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700610 <description>Per output channel bias data. +
611 Bias data will be broadcast if BC == 1.</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800612 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700613 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700614 <argument category="attribute" name="out_pad" type="tensor_t" shape="[4]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700615 <description>[out_pad_top, out_pad_bottom, out_pad_left, out_pad_right]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000616 <levellimit value="out_pad_top" limit="MAX_KERNEL"/>
617 <levellimit value="out_pad_bottom" limit="MAX_KERNEL"/>
618 <levellimit value="out_pad_left" limit="MAX_KERNEL"/>
619 <levellimit value="out_pad_right" limit="MAX_KERNEL"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800620 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700621 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700622 <argument category="attribute" name="stride" type="tensor_t" shape="[2]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700623 <description>[stride_y, stride_x]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000624 <levellimit value="stride_y" limit="MAX_STRIDE"/>
625 <levellimit value="stride_x" limit="MAX_STRIDE"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800626 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700627 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100628 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700629 <description>Input tensor zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100630 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700631 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100632 <argument category="attribute" name="weight_zp" type="tensor_t" shape="-" tensor-element-type="weight_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700633 <description>Weight zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100634 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700635 </argument>
Dominic Symesb5b06782023-07-27 11:50:57 +0100636 <argument category="attribute" name="local_bound" type="tensor_t" shape="-" tensor-element-type="bool_t" optional="true">
637 <description>
638 This optional attribute affects the floating-point compliance error bound.
639 The default of false allows for direct and transform based, fast convolution algorithms.
640 Only set to true if direct dot-product calculation precision is required.
641 </description>
642 <rank min="0" max="0"/>
643 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100644 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,OC]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700645 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800646 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700647 </argument>
648 </arguments>
649 <types>
650 <type name='in_t' />
651 <type name='weight_t' />
652 <type name='out_t' />
653 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700654 <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
655 <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
656 <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -0700657 <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
658 <profile name="MI"/>
659 <profile name="MT"/>
660 </typesupport>
661 <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
662 <profile name="MI"/>
663 <profile name="MT"/>
664 </typesupport>
665 <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
666 <profile name="MI"/>
667 <profile name="MT"/>
668 </typesupport>
669 <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
670 <profile name="MI"/>
671 <profile name="MT"/>
672 </typesupport>
673 </operator>
674 </operatorgroup>
675 <operatorgroup name="activation">
676 <operator>
677 <name>CLAMP</name>
678 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100679 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700680 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000681 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800682 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700683 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100684 <argument category="attribute" name="min_val" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700685 <description>Minimum clip value</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100686 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700687 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100688 <argument category="attribute" name="max_val" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700689 <description>Maximum clip value</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100690 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700691 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100692 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700693 <description>Output tensor of same type and shape as input</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800694 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700695 </argument>
696 </arguments>
697 <types>
698 <type name='in_out_t'/>
699 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700700 <typesupport mode="signed 8" in_out_t="i8_t"/>
701 <typesupport mode="signed 16" in_out_t="i16_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700702 <typesupport mode="fp16" in_out_t="fp16_t">
703 <profile name="MI"/>
704 <profile name="MT"/>
705 </typesupport>
706 <typesupport mode="bf16" in_out_t="bf16_t">
707 <profile name="MI"/>
708 <profile name="MT"/>
709 </typesupport>
710 <typesupport mode="fp32" in_out_t="fp32_t">
711 <profile name="MI"/>
712 <profile name="MT"/>
713 </typesupport>
714 </operator>
715 <operator>
Eric Kunze52c89f42023-05-10 16:41:13 -0700716 <name>ERF</name>
717 <arguments>
Jerry Gef0bc5502023-06-21 22:04:20 +0000718 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze52c89f42023-05-10 16:41:13 -0700719 <description>Input tensor</description>
720 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Jerry Gef0bc5502023-06-21 22:04:20 +0000721 <rank min="0" max="MAX_RANK"/>
Eric Kunze52c89f42023-05-10 16:41:13 -0700722 </argument>
Jerry Gef0bc5502023-06-21 22:04:20 +0000723 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze52c89f42023-05-10 16:41:13 -0700724 <description>Output tensor of same type and shape as input</description>
Jerry Gef0bc5502023-06-21 22:04:20 +0000725 <rank min="0" max="MAX_RANK"/>
Eric Kunze52c89f42023-05-10 16:41:13 -0700726 </argument>
727 </arguments>
728 <types>
729 <type name='in_out_t'/>
730 </types>
731 <typesupport mode="fp16" in_out_t="fp16_t">
732 <profile name="MI"/>
733 <profile name="MT"/>
734 </typesupport>
735 <typesupport mode="bf16" in_out_t="bf16_t">
736 <profile name="MI"/>
737 <profile name="MT"/>
738 </typesupport>
739 <typesupport mode="fp32" in_out_t="fp32_t">
740 <profile name="MI"/>
741 <profile name="MT"/>
742 </typesupport>
743 </operator>
744 <operator>
Eric Kunze58098a72022-08-05 15:40:12 -0700745 <name>SIGMOID</name>
746 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100747 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700748 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000749 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800750 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700751 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100752 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700753 <description>Output tensor of same type and shape as input</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800754 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700755 </argument>
756 </arguments>
757 <types>
758 <type name='in_out_t'/>
759 </types>
760 <typesupport mode="fp16" in_out_t="fp16_t">
761 <profile name="MI"/>
762 <profile name="MT"/>
763 </typesupport>
764 <typesupport mode="bf16" in_out_t="bf16_t">
765 <profile name="MI"/>
766 <profile name="MT"/>
767 </typesupport>
768 <typesupport mode="fp32" in_out_t="fp32_t">
769 <profile name="MI"/>
770 <profile name="MT"/>
771 </typesupport>
772 </operator>
773 <operator>
774 <name>TANH</name>
775 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100776 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700777 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000778 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800779 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700780 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100781 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700782 <description>Output tensor of same type and shape as input</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800783 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700784 </argument>
785 </arguments>
786 <types>
787 <type name='in_out_t'/>
788 </types>
789 <typesupport mode="fp16" in_out_t="fp16_t">
790 <profile name="MI"/>
791 <profile name="MT"/>
792 </typesupport>
793 <typesupport mode="bf16" in_out_t="bf16_t">
794 <profile name="MI"/>
795 <profile name="MT"/>
796 </typesupport>
797 <typesupport mode="fp32" in_out_t="fp32_t">
798 <profile name="MI"/>
799 <profile name="MT"/>
800 </typesupport>
801 </operator>
802 </operatorgroup>
803 <operatorgroup name="elementwise-binary">
804 <operator>
805 <name>ADD</name>
806 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100807 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700808 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800809 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700810 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100811 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700812 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800813 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700814 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100815 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700816 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000817 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800818 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700819 </argument>
820 </arguments>
821 <types>
822 <type name='in_out_t'/>
823 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700824 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700825 <typesupport mode="fp16" in_out_t="fp16_t" >
826 <profile name="MI"/>
827 <profile name="MT"/>
828 </typesupport>
829 <typesupport mode="bf16" in_out_t="bf16_t" >
830 <profile name="MI"/>
831 <profile name="MT"/>
832 </typesupport>
833 <typesupport mode="fp32" in_out_t="fp32_t" >
834 <profile name="MI"/>
835 <profile name="MT"/>
836 </typesupport>
837 </operator>
838 <operator>
839 <name>ARITHMETIC_RIGHT_SHIFT</name>
840 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100841 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700842 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800843 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700844 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100845 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700846 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800847 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700848 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100849 <argument category="attribute" name="round" type="tensor_t" shape="-" tensor-element-type="bool_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700850 <description>If true then the shift is rounded</description>
Kevin Petit5333c252023-05-16 09:08:48 +0100851 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700852 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100853 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700854 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000855 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800856 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700857 </argument>
858 </arguments>
859 <types>
860 <type name='in_out_t'/>
861 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700862 <typesupport mode="signed 8" in_out_t="i8_t"/>
863 <typesupport mode="signed 16" in_out_t="i16_t"/>
864 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700865 </operator>
866 <operator>
867 <name>BITWISE_AND</name>
868 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100869 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700870 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800871 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700872 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100873 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700874 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800875 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700876 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100877 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700878 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000879 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800880 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700881 </argument>
882 </arguments>
883 <types>
884 <type name='in_out_t'/>
885 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700886 <typesupport mode="signed 8" in_out_t="i8_t"/>
887 <typesupport mode="signed 16" in_out_t="i16_t"/>
888 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700889 </operator>
890 <operator>
891 <name>BITWISE_OR</name>
892 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100893 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700894 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800895 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700896 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100897 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700898 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800899 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700900 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100901 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700902 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000903 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800904 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700905 </argument>
906 </arguments>
907 <types>
908 <type name='in_out_t'/>
909 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700910 <typesupport mode="signed 8" in_out_t="i8_t"/>
911 <typesupport mode="signed 16" in_out_t="i16_t"/>
912 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700913 </operator>
914 <operator>
915 <name>BITWISE_XOR</name>
916 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100917 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700918 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800919 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700920 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100921 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700922 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800923 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700924 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100925 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700926 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000927 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800928 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700929 </argument>
930 </arguments>
931 <types>
932 <type name='in_out_t'/>
933 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700934 <typesupport mode="signed 8" in_out_t="i8_t"/>
935 <typesupport mode="signed 16" in_out_t="i16_t"/>
936 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700937 </operator>
938 <operator>
939 <name>INTDIV</name>
940 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100941 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700942 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800943 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700944 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100945 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700946 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800947 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700948 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100949 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700950 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000951 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800952 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700953 </argument>
954 </arguments>
955 <types>
956 <type name='in_out_t'/>
957 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -0700958 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700959 </operator>
960 <operator>
961 <name>LOGICAL_AND</name>
962 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100963 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700964 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800965 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700966 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100967 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700968 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800969 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700970 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100971 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700972 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000973 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800974 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700975 </argument>
976 </arguments>
977 <types>
978 <type name='in_out_t'/>
979 </types>
980 <typesupport mode="boolean" in_out_t="bool_t"/>
981 </operator>
982 <operator>
983 <name>LOGICAL_LEFT_SHIFT</name>
984 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +0100985 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700986 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800987 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700988 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100989 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -0700990 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -0800991 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700992 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +0100993 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -0700994 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000995 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800996 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700997 </argument>
998 </arguments>
999 <types>
1000 <type name='in_out_t'/>
1001 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001002 <typesupport mode="signed 8" in_out_t="i8_t"/>
1003 <typesupport mode="signed 16" in_out_t="i16_t"/>
1004 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001005 </operator>
1006 <operator>
1007 <name>LOGICAL_RIGHT_SHIFT</name>
1008 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001009 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001010 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001011 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001012 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001013 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001014 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001015 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001016 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001017 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001018 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001019 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001020 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001021 </argument>
1022 </arguments>
1023 <types>
1024 <type name='in_out_t'/>
1025 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001026 <typesupport mode="signed 8" in_out_t="i8_t"/>
1027 <typesupport mode="signed 16" in_out_t="i16_t"/>
1028 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001029 </operator>
1030 <operator>
1031 <name>LOGICAL_OR</name>
1032 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001033 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001034 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001035 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001036 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001037 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001038 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001039 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001040 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001041 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001042 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001043 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001044 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001045 </argument>
1046 </arguments>
1047 <types>
1048 <type name='in_out_t'/>
1049 </types>
1050 <typesupport mode="boolean" in_out_t="bool_t"/>
1051 </operator>
1052 <operator>
1053 <name>LOGICAL_XOR</name>
1054 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001055 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001056 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001057 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001058 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001059 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001060 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001061 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001062 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001063 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001064 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001065 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001066 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001067 </argument>
1068 </arguments>
1069 <types>
1070 <type name='in_out_t'/>
1071 </types>
1072 <typesupport mode="boolean" in_out_t="bool_t"/>
1073 </operator>
1074 <operator>
1075 <name>MAXIMUM</name>
1076 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001077 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001078 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001079 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001080 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001081 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001082 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001083 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001084 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001085 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001086 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001087 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001088 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001089 </argument>
1090 </arguments>
1091 <types>
1092 <type name='in_out_t'/>
1093 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001094 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001095 <typesupport mode="fp16" in_out_t="fp16_t" >
1096 <profile name="MI"/>
1097 <profile name="MT"/>
1098 </typesupport>
1099 <typesupport mode="bf16" in_out_t="bf16_t" >
1100 <profile name="MI"/>
1101 <profile name="MT"/>
1102 </typesupport>
1103 <typesupport mode="fp32" in_out_t="fp32_t" >
1104 <profile name="MI"/>
1105 <profile name="MT"/>
1106 </typesupport>
1107 </operator>
1108 <operator>
1109 <name>MINIMUM</name>
1110 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001111 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001112 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001113 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001114 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001115 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001116 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001117 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001118 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001119 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001120 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001121 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001122 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001123 </argument>
1124 </arguments>
1125 <types>
1126 <type name='in_out_t'/>
1127 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001128 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001129 <typesupport mode="fp16" in_out_t="fp16_t" >
1130 <profile name="MI"/>
1131 <profile name="MT"/>
1132 </typesupport>
1133 <typesupport mode="bf16" in_out_t="bf16_t" >
1134 <profile name="MI"/>
1135 <profile name="MT"/>
1136 </typesupport>
1137 <typesupport mode="fp32" in_out_t="fp32_t" >
1138 <profile name="MI"/>
1139 <profile name="MT"/>
1140 </typesupport>
1141 </operator>
1142 <operator>
1143 <name>MUL</name>
1144 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001145 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001146 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001147 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001148 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001149 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001150 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001151 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001152 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001153 <argument category="input(MT)|attribute(BI,MI)" name="shift" type="tensor_t" shape="-" tensor-element-type="i8_t">
1154 <description>Result right shift (i32_t data type only)</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001155 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001156 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001157 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001158 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001159 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001160 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001161 </argument>
1162 </arguments>
1163 <types>
1164 <type name='in_t'/>
1165 <type name='out_t'/>
1166 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001167 <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t"/>
1168 <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t"/>
1169 <typesupport mode="signed 32" in_t="i32_t" out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001170 <typesupport mode="fp16" in_t="fp16_t" out_t="fp16_t">
1171 <profile name="MI"/>
1172 <profile name="MT"/>
1173 </typesupport>
1174 <typesupport mode="bf16" in_t="bf16_t" out_t="bf16_t">
1175 <profile name="MI"/>
1176 <profile name="MT"/>
1177 </typesupport>
1178 <typesupport mode="fp32" in_t="fp32_t" out_t="fp32_t">
1179 <profile name="MI"/>
1180 <profile name="MT"/>
1181 </typesupport>
1182 </operator>
1183 <operator>
1184 <name>POW</name>
1185 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001186 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Dominic Symes8783adb2022-07-27 12:53:11 +01001187 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001188 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001189 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001190 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001191 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001192 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001193 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001194 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001195 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001196 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001197 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001198 </argument>
1199 </arguments>
1200 <types>
1201 <type name='in_out_t'/>
1202 </types>
1203 <typesupport mode="fp16" in_out_t="fp16_t" >
1204 <profile name="MI"/>
1205 <profile name="MT"/>
1206 </typesupport>
1207 <typesupport mode="bf16" in_out_t="bf16_t" >
1208 <profile name="MI"/>
1209 <profile name="MT"/>
1210 </typesupport>
1211 <typesupport mode="fp32" in_out_t="fp32_t" >
1212 <profile name="MI"/>
1213 <profile name="MT"/>
1214 </typesupport>
1215 </operator>
1216 <operator>
1217 <name>SUB</name>
1218 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001219 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001220 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001221 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001222 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001223 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001224 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001225 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001226 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001227 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001228 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001229 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001230 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001231 </argument>
1232 </arguments>
1233 <types>
1234 <type name='in_out_t'/>
1235 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001236 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001237 <typesupport mode="fp16" in_out_t="fp16_t" >
1238 <profile name="MI"/>
1239 <profile name="MT"/>
1240 </typesupport>
1241 <typesupport mode="bf16" in_out_t="bf16_t" >
1242 <profile name="MI"/>
1243 <profile name="MT"/>
1244 </typesupport>
1245 <typesupport mode="fp32" in_out_t="fp32_t" >
1246 <profile name="MI"/>
1247 <profile name="MT"/>
1248 </typesupport>
1249 </operator>
1250 <operator>
1251 <name>TABLE</name>
1252 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001253 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001254 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001255 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001256 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001257 <argument category="input(MT)|attribute(BI,MI)" name="table" type="tensor_t" shape="[TABLE_SIZE]" tensor-element-type="table_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001258 <description>Lookup table tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001259 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001260 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001261 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001262 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001263 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001264 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001265 </argument>
1266 </arguments>
1267 <types>
1268 <type name='in_t'/>
1269 <type name='table_t'/>
1270 <type name='out_t'/>
1271 <type name='TABLE_SIZE'/>
1272 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001273 <typesupport mode="signed 8" in_t="i8_t" table_t="i8_t" TABLE_SIZE="256" out_t="i8_t"/>
1274 <typesupport mode="signed 16" in_t="i16_t" table_t="i16_t" TABLE_SIZE="513" out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001275 </operator>
1276 </operatorgroup>
1277 <operatorgroup name="elementwise-unary">
1278 <operator>
1279 <name>ABS</name>
1280 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001281 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001282 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001283 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001284 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001285 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001286 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001287 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001288 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001289 </argument>
1290 </arguments>
1291 <types>
1292 <type name='in_out_t'/>
1293 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001294 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001295 <typesupport mode="fp16" in_out_t="fp16_t" >
1296 <profile name="MI"/>
1297 <profile name="MT"/>
1298 </typesupport>
1299 <typesupport mode="bf16" in_out_t="bf16_t" >
1300 <profile name="MI"/>
1301 <profile name="MT"/>
1302 </typesupport>
1303 <typesupport mode="fp32" in_out_t="fp32_t" >
1304 <profile name="MI"/>
1305 <profile name="MT"/>
1306 </typesupport>
1307 </operator>
1308 <operator>
1309 <name>BITWISE_NOT</name>
1310 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001311 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001312 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001313 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001314 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001315 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001316 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001317 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001318 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001319 </argument>
1320 </arguments>
1321 <types>
1322 <type name='in_out_t'/>
1323 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001324 <typesupport mode="signed 8" in_out_t="i8_t"/>
1325 <typesupport mode="signed 16" in_out_t="i16_t"/>
1326 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001327 </operator>
1328 <operator>
1329 <name>CEIL</name>
1330 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001331 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001332 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001333 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001334 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001335 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001336 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001337 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001338 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001339 </argument>
1340 </arguments>
1341 <types>
1342 <type name='in_out_t'/>
1343 </types>
1344 <typesupport mode="fp16" in_out_t="fp16_t" >
1345 <profile name="MI"/>
1346 <profile name="MT"/>
1347 </typesupport>
1348 <typesupport mode="bf16" in_out_t="bf16_t" >
1349 <profile name="MI"/>
1350 <profile name="MT"/>
1351 </typesupport>
1352 <typesupport mode="fp32" in_out_t="fp32_t" >
1353 <profile name="MI"/>
1354 <profile name="MT"/>
1355 </typesupport>
1356 </operator>
1357 <operator>
1358 <name>CLZ</name>
1359 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001360 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001361 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001362 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001363 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001364 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001365 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001366 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001367 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001368 </argument>
1369 </arguments>
1370 <types>
1371 <type name='in_out_t'/>
1372 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001373 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001374 </operator>
1375 <operator>
1376 <name>EXP</name>
1377 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001378 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001379 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001380 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001381 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001382 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001383 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001384 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001385 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001386 </argument>
1387 </arguments>
1388 <types>
1389 <type name='in_out_t'/>
1390 </types>
1391 <typesupport mode="fp16" in_out_t="fp16_t">
1392 <profile name="MI"/>
1393 <profile name="MT"/>
1394 </typesupport>
1395 <typesupport mode="bf16" in_out_t="bf16_t">
1396 <profile name="MI"/>
1397 <profile name="MT"/>
1398 </typesupport>
1399 <typesupport mode="fp32" in_out_t="fp32_t">
1400 <profile name="MI"/>
1401 <profile name="MT"/>
1402 </typesupport>
1403 </operator>
1404 <operator>
1405 <name>FLOOR</name>
1406 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001407 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001408 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001409 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001410 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001411 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001412 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001413 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001414 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001415 </argument>
1416 </arguments>
1417 <types>
1418 <type name='in_out_t'/>
1419 </types>
1420 <typesupport mode="fp16" in_out_t="fp16_t">
1421 <profile name="MI"/>
1422 <profile name="MT"/>
1423 </typesupport>
1424 <typesupport mode="bf16" in_out_t="bf16_t">
1425 <profile name="MI"/>
1426 <profile name="MT"/>
1427 </typesupport>
1428 <typesupport mode="fp32" in_out_t="fp32_t">
1429 <profile name="MI"/>
1430 <profile name="MT"/>
1431 </typesupport>
1432 </operator>
1433 <operator>
1434 <name>LOG</name>
1435 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001436 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001437 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001438 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001439 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001440 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001441 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001442 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001443 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001444 </argument>
1445 </arguments>
1446 <types>
1447 <type name='in_out_t'/>
1448 </types>
1449 <typesupport mode="fp16" in_out_t="fp16_t">
1450 <profile name="MI"/>
1451 <profile name="MT"/>
1452 </typesupport>
1453 <typesupport mode="bf16" in_out_t="bf16_t">
1454 <profile name="MI"/>
1455 <profile name="MT"/>
1456 </typesupport>
1457 <typesupport mode="fp32" in_out_t="fp32_t">
1458 <profile name="MI"/>
1459 <profile name="MT"/>
1460 </typesupport>
1461 </operator>
1462 <operator>
1463 <name>LOGICAL_NOT</name>
1464 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001465 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001466 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001467 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001468 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001469 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001470 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001471 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001472 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001473 </argument>
1474 </arguments>
1475 <types>
1476 <type name='in_out_t'/>
1477 </types>
1478 <typesupport mode="Boolean" in_out_t="bool_t"/>
1479 </operator>
1480 <operator>
1481 <name>NEGATE</name>
1482 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001483 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001484 <description>Input tensor</description>
Jeremy Johnson9bb5f5d2023-04-06 11:37:05 +01001485 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001486 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001487 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001488 <argument category="attribute" name="input1_zp" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001489 <description>Input 1 zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001490 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001491 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001492 <argument category="attribute" name="output_zp" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001493 <description>Output zero point. Must be zero for non-int8 types.</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001494 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001495 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001496 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001497 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001498 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001499 </argument>
1500 </arguments>
1501 <types>
1502 <type name='in_out_t'/>
1503 <type name='acc_t'/>
1504 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001505 <typesupport mode="signed 8" in_out_t="i8_t" acc_t="i32_t"/>
1506 <typesupport mode="signed 16" in_out_t="i16_t" acc_t="i32_t"/>
1507 <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001508 <typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
1509 <profile name="MI"/>
1510 <profile name="MT"/>
1511 </typesupport>
1512 <typesupport mode="bf16" in_out_t="bf16_t" acc_t="bf16_t">
1513 <profile name="MI"/>
1514 <profile name="MT"/>
1515 </typesupport>
1516 <typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
1517 <profile name="MI"/>
1518 <profile name="MT"/>
1519 </typesupport>
1520 </operator>
1521 <operator>
1522 <name>RECIPROCAL</name>
1523 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001524 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001525 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001526 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001527 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001528 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001529 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001530 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001531 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001532 </argument>
1533 </arguments>
1534 <types>
1535 <type name='in_out_t'/>
1536 </types>
1537 <typesupport mode="fp16" in_out_t="fp16_t">
1538 <profile name="MI"/>
1539 <profile name="MT"/>
1540 </typesupport>
1541 <typesupport mode="bf16" in_out_t="bf16_t">
1542 <profile name="MI"/>
1543 <profile name="MT"/>
1544 </typesupport>
1545 <typesupport mode="fp32" in_out_t="fp32_t">
1546 <profile name="MI"/>
1547 <profile name="MT"/>
1548 </typesupport>
1549 </operator>
1550 <operator>
1551 <name>RSQRT</name>
1552 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001553 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001554 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001555 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001556 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001557 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001558 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001559 <description>Output tensor of same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001560 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001561 </argument>
1562 </arguments>
1563 <types>
1564 <type name='in_out_t'/>
1565 </types>
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 </operatorgroup>
1580 <operatorgroup name="elementwise-ternary">
1581 <operator>
1582 <name>SELECT</name>
1583 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001584 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="bool_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001585 <description>Input selector tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001586 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001587 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001588 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001589 <description>Input value tensor if input1 is True</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001590 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001591 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001592 <argument category="input" name="input3" type="tensor_t" shape="shape3" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001593 <description>Input value tensor if input1 is False</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001594 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001595 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001596 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001597 <description>Output tensor of same type as input2 and input3</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001598 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001599 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001600 </argument>
1601 </arguments>
1602 <types>
Eric Kunze58098a72022-08-05 15:40:12 -07001603 <type name='in_out_t'/>
1604 </types>
Kevin Petitb7293ae2022-12-05 12:07:40 +00001605 <typesupport mode="Boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001606 <typesupport mode="signed 8" in_out_t="i8_t"/>
1607 <typesupport mode="signed 16" in_out_t="i16_t"/>
1608 <typesupport mode="signed 32" in_out_t="i32_t"/>
Kevin Petitb7293ae2022-12-05 12:07:40 +00001609 <typesupport mode="fp16" in_out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001610 <profile name="MI"/>
1611 <profile name="MT"/>
1612 </typesupport>
Kevin Petitb7293ae2022-12-05 12:07:40 +00001613 <typesupport mode="bf16" in_out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001614 <profile name="MI"/>
1615 <profile name="MT"/>
1616 </typesupport>
Kevin Petitb7293ae2022-12-05 12:07:40 +00001617 <typesupport mode="fp32" in_out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001618 <profile name="MI"/>
1619 <profile name="MT"/>
1620 </typesupport>
1621 </operator>
1622 </operatorgroup>
1623 <operatorgroup name="comparison">
1624 <operator>
1625 <name>EQUAL</name>
1626 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001627 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001628 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001629 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001630 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001631 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001632 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001633 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001634 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001635 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001636 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001637 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001638 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001639 </argument>
1640 </arguments>
1641 <types>
1642 <type name='in_t'/>
1643 <type name='out_t'/>
1644 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001645 <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001646 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1647 <profile name="MI"/>
1648 <profile name="MT"/>
1649 </typesupport>
1650 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1651 <profile name="MI"/>
1652 <profile name="MT"/>
1653 </typesupport>
1654 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1655 <profile name="MI"/>
1656 <profile name="MT"/>
1657 </typesupport>
1658 </operator>
1659 <operator>
1660 <name>GREATER</name>
1661 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001662 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001663 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001664 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001665 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001666 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001667 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001668 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001669 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001670 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001671 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001672 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001673 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001674 </argument>
1675 </arguments>
1676 <types>
1677 <type name='in_t'/>
1678 <type name='out_t'/>
1679 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001680 <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001681 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1682 <profile name="MI"/>
1683 <profile name="MT"/>
1684 </typesupport>
1685 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1686 <profile name="MI"/>
1687 <profile name="MT"/>
1688 </typesupport>
1689 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1690 <profile name="MI"/>
1691 <profile name="MT"/>
1692 </typesupport>
1693 </operator>
1694 <operator>
1695 <name>GREATER_EQUAL</name>
1696 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001697 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001698 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001699 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001700 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001701 <argument category="input" name="input2" type="tensor_t" shape="shape2" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001702 <description>Input tensor with the same rank as input1</description>
Eric Kunze42085e32023-01-09 11:16:51 -08001703 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001704 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001705 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze8033f122023-10-27 11:47:05 -07001706 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001707 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001708 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001709 </argument>
1710 </arguments>
1711 <types>
1712 <type name='in_t'/>
1713 <type name='out_t'/>
1714 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001715 <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001716 <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
1717 <profile name="MI"/>
1718 <profile name="MT"/>
1719 </typesupport>
1720 <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
1721 <profile name="MI"/>
1722 <profile name="MT"/>
1723 </typesupport>
1724 <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
1725 <profile name="MI"/>
1726 <profile name="MT"/>
1727 </typesupport>
1728 </operator>
1729 </operatorgroup>
1730 <operatorgroup name="reduction">
1731 <operator>
1732 <name>REDUCE_ALL</name>
1733 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001734 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001735 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001736 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001737 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001738 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001739 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001740 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001741 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001742 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001743 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001744 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001745 </argument>
1746 </arguments>
1747 <types>
1748 <type name='in_out_t'/>
1749 </types>
1750 <typesupport mode="boolean" in_out_t="bool_t"/>
1751 </operator>
1752 <operator>
1753 <name>REDUCE_ANY</name>
1754 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001755 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001756 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001757 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001758 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001759 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001760 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001761 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001762 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001763 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001764 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001765 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001766 </argument>
1767 </arguments>
1768 <types>
1769 <type name='in_out_t'/>
1770 </types>
1771 <typesupport mode="boolean" in_out_t="bool_t"/>
1772 </operator>
1773 <operator>
1774 <name>REDUCE_MAX</name>
1775 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001776 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001777 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001778 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001779 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001780 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001781 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001782 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001783 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001784 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001785 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001786 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001787 </argument>
1788 </arguments>
1789 <types>
1790 <type name='in_out_t'/>
1791 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001792 <typesupport mode="signed 8" in_out_t="i8_t"/>
1793 <typesupport mode="signed 16" in_out_t="i16_t"/>
1794 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001795 <typesupport mode="fp16" in_out_t="fp16_t">
1796 <profile name="MI"/>
1797 <profile name="MT"/>
1798 </typesupport>
1799 <typesupport mode="bf16" in_out_t="bf16_t">
1800 <profile name="MI"/>
1801 <profile name="MT"/>
1802 </typesupport>
1803 <typesupport mode="fp32" in_out_t="fp32_t">
1804 <profile name="MI"/>
1805 <profile name="MT"/>
1806 </typesupport>
1807 </operator>
1808 <operator>
1809 <name>REDUCE_MIN</name>
1810 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001811 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001812 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001813 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001814 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001815 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001816 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001817 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001818 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001819 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001820 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001821 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001822 </argument>
1823 </arguments>
1824 <types>
1825 <type name='in_out_t'/>
1826 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001827 <typesupport mode="signed 8" in_out_t="i8_t"/>
1828 <typesupport mode="signed 16" in_out_t="i16_t"/>
1829 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001830 <typesupport mode="fp16" in_out_t="fp16_t">
1831 <profile name="MI"/>
1832 <profile name="MT"/>
1833 </typesupport>
1834 <typesupport mode="bf16" in_out_t="bf16_t">
1835 <profile name="MI"/>
1836 <profile name="MT"/>
1837 </typesupport>
1838 <typesupport mode="fp32" in_out_t="fp32_t">
1839 <profile name="MI"/>
1840 <profile name="MT"/>
1841 </typesupport>
1842 </operator>
1843 <operator>
1844 <name>REDUCE_PRODUCT</name>
1845 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001846 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001847 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001848 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001849 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001850 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001851 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001852 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001853 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001854 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001855 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001856 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001857 </argument>
1858 </arguments>
1859 <types>
1860 <type name='in_out_t'/>
1861 </types>
1862 <typesupport mode="fp16" in_out_t="fp16_t">
1863 <profile name="MI"/>
1864 <profile name="MT"/>
1865 </typesupport>
1866 <typesupport mode="bf16" in_out_t="bf16_t">
1867 <profile name="MI"/>
1868 <profile name="MT"/>
1869 </typesupport>
1870 <typesupport mode="fp32" in_out_t="fp32_t">
1871 <profile name="MI"/>
1872 <profile name="MT"/>
1873 </typesupport>
1874 </operator>
1875 <operator>
1876 <name>REDUCE_SUM</name>
1877 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001878 <argument category="input" name="input" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Dominic Symes9151dd52023-11-03 14:29:51 +00001879 <description>Input tensor</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001880 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001881 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001882 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001883 <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001884 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001885 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001886 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001887 <description>Output tensor. Same rank as the input tensor.</description>
Eric Kunze67f6b262023-06-30 15:04:25 -07001888 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001889 </argument>
1890 </arguments>
1891 <types>
1892 <type name='in_out_t'/>
Dominic Symes9151dd52023-11-03 14:29:51 +00001893 <type name='acc_t'/>
Eric Kunze58098a72022-08-05 15:40:12 -07001894 </types>
Dominic Symes9151dd52023-11-03 14:29:51 +00001895 <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t"/>
1896 <typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001897 <profile name="MI"/>
1898 <profile name="MT"/>
1899 </typesupport>
Dominic Symes9151dd52023-11-03 14:29:51 +00001900 <typesupport mode="bf16" in_out_t="bf16_t" acc_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001901 <profile name="MI"/>
1902 <profile name="MT"/>
1903 </typesupport>
Dominic Symes9151dd52023-11-03 14:29:51 +00001904 <typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001905 <profile name="MI"/>
1906 <profile name="MT"/>
1907 </typesupport>
1908 </operator>
1909 </operatorgroup>
1910 <operatorgroup name="data-layout">
1911 <operator>
1912 <name>CONCAT</name>
1913 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001914 <argument category="input" name="input1" type="tensor_list_t" shape="shapes1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001915 <description>List of input tensors. All inputs must have the same rank and data type</description>
Dominic Symes830b43b2023-05-09 10:14:49 +01001916 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001917 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001918 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001919 <description>Axis along which concatenation is to occur, in range from 0 to rank(shape)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001920 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001921 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001922 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001923 <description>Output tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001924 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001925 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001926 </argument>
1927 </arguments>
1928 <types>
1929 <type name='in_out_t'/>
1930 </types>
1931 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001932 <typesupport mode="signed 8" in_out_t="i8_t"/>
1933 <typesupport mode="signed 16" in_out_t="i16_t"/>
1934 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001935 <typesupport mode="fp16" in_out_t="fp16_t">
1936 <profile name="MI"/>
1937 <profile name="MT"/>
1938 </typesupport>
1939 <typesupport mode="bf16" in_out_t="bf16_t">
1940 <profile name="MI"/>
1941 <profile name="MT"/>
1942 </typesupport>
1943 <typesupport mode="fp32" in_out_t="fp32_t">
1944 <profile name="MI"/>
1945 <profile name="MT"/>
1946 </typesupport>
1947 </operator>
1948 <operator>
1949 <name>PAD</name>
1950 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01001951 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08001952 <description>Input tensor</description>
1953 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001954 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08001955 <argument category="input" name="padding" type="shape_t" shape="-" tensor-element-type="-">
1956 <description>Number of pad elements at the start and end of each dimension.
1957 The values in padding are interpreted as start, end of each dimension.
1958 As an example for rank 2, the values would be interpreted as [start_dim0, end_dim0, start_dim1, end_dim1].</description>
Eric Kunze58098a72022-08-05 15:40:12 -07001959 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001960 <argument category="attribute" name="pad_const" type="tensor_t" shape="-" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001961 <description>Constant value to be used as padding</description>
Kevin Petit5333c252023-05-16 09:08:48 +01001962 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001963 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01001964 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07001965 <description>Output tensor of same type as the input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00001966 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08001967 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001968 </argument>
1969 </arguments>
1970 <types>
1971 <type name='in_out_t'/>
1972 </types>
1973 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001974 <typesupport mode="signed 8" in_out_t="i8_t"/>
1975 <typesupport mode="signed 16" in_out_t="i16_t"/>
1976 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07001977 <typesupport mode="fp16" in_out_t="fp16_t">
1978 <profile name="MI"/>
1979 <profile name="MT"/>
1980 </typesupport>
1981 <typesupport mode="bf16" in_out_t="bf16_t">
1982 <profile name="MI"/>
1983 <profile name="MT"/>
1984 </typesupport>
1985 <typesupport mode="fp32" in_out_t="fp32_t">
1986 <profile name="MI"/>
1987 <profile name="MT"/>
1988 </typesupport>
1989 </operator>
1990 <operator>
Dominic Symes830b43b2023-05-09 10:14:49 +01001991 <name>DIM</name>
1992 <arguments>
1993 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_t">
1994 <description>Input tensor</description>
1995 <levellimit value="rank(shape)" limit="MAX_RANK"/>
1996 <rank min="1" max="MAX_RANK"/>
1997 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07001998 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Dominic Symes830b43b2023-05-09 10:14:49 +01001999 <description>Axis in range from 0 to rank(shape) - 1</description>
2000 <rank min="0" max="0"/>
2001 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002002 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-" >
2003 <description>Output shape type of size 1 giving the size of the shape for the given axis</description>
Dominic Symes830b43b2023-05-09 10:14:49 +01002004 </argument>
2005 </arguments>
2006 <types>
2007 <type name='in_t'/>
2008 </types>
2009 <typesupport mode="boolean" in_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002010 <typesupport mode="signed 8" in_t="i8_t"/>
2011 <typesupport mode="signed 16" in_t="i16_t"/>
2012 <typesupport mode="signed 32" in_t="i32_t"/>
Dominic Symes830b43b2023-05-09 10:14:49 +01002013 <typesupport mode="fp16" in_t="fp16_t">
2014 <profile name="MI"/>
2015 <profile name="MT"/>
2016 </typesupport>
2017 <typesupport mode="bf16" in_t="bf16_t">
2018 <profile name="MI"/>
2019 <profile name="MT"/>
2020 </typesupport>
2021 <typesupport mode="fp32" in_t="fp32_t">
2022 <profile name="MI"/>
2023 <profile name="MT"/>
2024 </typesupport>
2025 </operator>
2026 <operator>
Eric Kunze58098a72022-08-05 15:40:12 -07002027 <name>RESHAPE</name>
2028 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002029 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002030 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002031 <levellimit value="rank(shape1)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002032 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002033 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002034 <argument category="input" name="shape" type="shape_t" shape="-" tensor-element-type="-">
2035 <description>shape_t giving the new shape.</description>
Eric Kunze58098a72022-08-05 15:40:12 -07002036 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002037 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002038 <description>Output tensor of same type, size as the input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002039 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002040 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002041 </argument>
2042 </arguments>
2043 <types>
2044 <type name='in_out_t'/>
2045 </types>
2046 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002047 <typesupport mode="signed 8" in_out_t="i8_t"/>
2048 <typesupport mode="signed 16" in_out_t="i16_t"/>
2049 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002050 <typesupport mode="fp16" in_out_t="fp16_t">
2051 <profile name="MI"/>
2052 <profile name="MT"/>
2053 </typesupport>
2054 <typesupport mode="bf16" in_out_t="bf16_t">
2055 <profile name="MI"/>
2056 <profile name="MT"/>
2057 </typesupport>
2058 <typesupport mode="fp32" in_out_t="fp32_t">
2059 <profile name="MI"/>
2060 <profile name="MT"/>
2061 </typesupport>
2062 </operator>
2063 <operator>
2064 <name>REVERSE</name>
2065 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002066 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08002067 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002068 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002069 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002070 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002071 <argument category="attribute" name="axis" type="tensor_t" shape="-" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002072 <description>Axis to reverse, in range from 0 to rank(shape)-1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002073 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002074 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002075 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002076 <description>Output tensor. Same shape as input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002077 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002078 </argument>
2079 </arguments>
2080 <types>
2081 <type name='in_out_t'/>
2082 </types>
2083 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002084 <typesupport mode="signed 8" in_out_t="i8_t"/>
2085 <typesupport mode="signed 16" in_out_t="i16_t"/>
2086 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002087 <typesupport mode="fp16" in_out_t="fp16_t">
2088 <profile name="MI"/>
2089 <profile name="MT"/>
2090 </typesupport>
2091 <typesupport mode="bf16" in_out_t="bf16_t">
2092 <profile name="MI"/>
2093 <profile name="MT"/>
2094 </typesupport>
2095 <typesupport mode="fp32" in_out_t="fp32_t">
2096 <profile name="MI"/>
2097 <profile name="MT"/>
2098 </typesupport>
2099 </operator>
2100 <operator>
2101 <name>SLICE</name>
2102 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002103 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08002104 <description>Input tensor</description>
2105 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002106 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002107 <argument category="input" name="start" type="shape_t" shape="[rank(shape1)]" tensor-element-type="size_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002108 <description>List of integer coordinates, of length equal to the rank of input1. Start coordinate for slicing.</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002109 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002110 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002111 <argument category="input" name="size" type="shape_t" shape="[rank(shape1)]" tensor-element-type="size_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002112 <description>List of integer size values, of length equal to the rank of input1. Size of the input to be
2113used.</description>
Luke Hutton580fdd12023-02-06 16:37:15 +00002114 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002115 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002116 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002117 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002118 <description>Output tensor of same type as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002119 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002120 </argument>
2121 </arguments>
2122 <types>
2123 <type name='in_out_t'/>
2124 </types>
2125 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002126 <typesupport mode="signed 8" in_out_t="i8_t"/>
2127 <typesupport mode="signed 16" in_out_t="i16_t"/>
2128 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002129 <typesupport mode="fp16" in_out_t="fp16_t">
2130 <profile name="MI"/>
2131 <profile name="MT"/>
2132 </typesupport>
2133 <typesupport mode="bf16" in_out_t="bf16_t">
2134 <profile name="MI"/>
2135 <profile name="MT"/>
2136 </typesupport>
2137 <typesupport mode="fp32" in_out_t="fp32_t">
2138 <profile name="MI"/>
2139 <profile name="MT"/>
2140 </typesupport>
2141 </operator>
2142 <operator>
2143 <name>TILE</name>
2144 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002145 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08002146 <description>Input tensor</description>
2147 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002148 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002149 <argument category="input" name="multiples" type="shape_t" shape="[rank(shape1)]" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002150 <description>Number of times to replicate input1 in each dimension</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002151 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002152 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002153 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002154 <description>Output tensor of same type, rank as the input tensor</description>
Luke Hutton580fdd12023-02-06 16:37:15 +00002155 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002156 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002157 </argument>
2158 </arguments>
2159 <types>
2160 <type name='in_out_t'/>
2161 </types>
2162 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002163 <typesupport mode="signed 8" in_out_t="i8_t"/>
2164 <typesupport mode="signed 16" in_out_t="i16_t"/>
2165 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002166 <typesupport mode="fp16" in_out_t="fp16_t">
2167 <profile name="MI"/>
2168 <profile name="MT"/>
2169 </typesupport>
2170 <typesupport mode="bf16" in_out_t="bf16_t">
2171 <profile name="MI"/>
2172 <profile name="MT"/>
2173 </typesupport>
2174 <typesupport mode="fp32" in_out_t="fp32_t">
2175 <profile name="MI"/>
2176 <profile name="MT"/>
2177 </typesupport>
2178 </operator>
2179 <operator>
2180 <name>TRANSPOSE</name>
2181 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002182 <argument category="input" name="input1" type="tensor_t" shape="shape1" tensor-element-type="in_out_t">
Eric Kunze42085e32023-01-09 11:16:51 -08002183 <description>Input tensor</description>
2184 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002185 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002186 <argument category="attribute" name="perms" type="tensor_t" shape="[rank(shape1)]" tensor-element-type="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002187 <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>
Eric Kunze42085e32023-01-09 11:16:51 -08002188 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002189 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002190 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002191 <description>Output tensor of same type, rank as the input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002192 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002193 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002194 </argument>
2195 </arguments>
2196 <types>
2197 <type name='in_out_t'/>
2198 </types>
2199 <typesupport mode="boolean" in_out_t="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002200 <typesupport mode="signed 8" in_out_t="i8_t"/>
2201 <typesupport mode="signed 16" in_out_t="i16_t"/>
2202 <typesupport mode="signed 32" in_out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002203 <typesupport mode="fp16" in_out_t="fp16_t">
2204 <profile name="MI"/>
2205 <profile name="MT"/>
2206 </typesupport>
2207 <typesupport mode="bf16" in_out_t="bf16_t">
2208 <profile name="MI"/>
2209 <profile name="MT"/>
2210 </typesupport>
2211 <typesupport mode="fp32" in_out_t="fp32_t">
2212 <profile name="MI"/>
2213 <profile name="MT"/>
2214 </typesupport>
2215 </operator>
2216 </operatorgroup>
2217 <operatorgroup name="scatter-gather">
2218 <operator>
2219 <name>GATHER</name>
2220 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002221 <argument category="input" name="values" type="tensor_t" shape="[N,K,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002222 <description>3D value tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002223 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002224 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002225 <argument category="input" name="indices" type="tensor_t" shape="[N,W]" tensor-element-type="size_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002226 <description>2D index tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002227 <rank min="2" max="2"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002228 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002229 <argument category="output" name="output" type="tensor_t" shape="[N,W,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002230 <description>3D output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002231 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002232 </argument>
2233 </arguments>
2234 <types>
Kevin Petit18548922023-03-17 17:12:30 +00002235 <type name='in_out_t'/>
Eric Kunze58098a72022-08-05 15:40:12 -07002236 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002237 <typesupport mode="signed 8" in_out_t="i8_t"/>
2238 <typesupport mode="signed 16" in_out_t="i16_t"/>
2239 <typesupport mode="signed 32" in_out_t="i32_t"/>
Kevin Petit18548922023-03-17 17:12:30 +00002240 <typesupport mode="fp16" in_out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002241 <profile name="MI"/>
2242 <profile name="MT"/>
2243 </typesupport>
Kevin Petit18548922023-03-17 17:12:30 +00002244 <typesupport mode="bf16" in_out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002245 <profile name="MI"/>
2246 <profile name="MT"/>
2247 </typesupport>
Kevin Petit18548922023-03-17 17:12:30 +00002248 <typesupport mode="fp32" in_out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002249 <profile name="MI"/>
2250 <profile name="MT"/>
2251 </typesupport>
2252 </operator>
2253 <operator>
2254 <name>SCATTER</name>
2255 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002256 <argument category="input" name="values_in" type="tensor_t" shape="[N,K,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002257 <description>3D values in tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002258 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002259 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002260 <argument category="input" name="indices" type="tensor_t" shape="[N,W]" tensor-element-type="size_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002261 <description>2D index tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002262 <rank min="2" max="2"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002263 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002264 <argument category="input" name="input" type="tensor_t" shape="[N,W,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002265 <description>3D input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002266 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002267 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002268 <argument category="output" name="values_out" type="tensor_t" shape="[N,K,C]" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002269 <description>3D output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002270 <rank min="3" max="3"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002271 </argument>
2272 </arguments>
2273 <types>
Kevin Petit18548922023-03-17 17:12:30 +00002274 <type name='in_out_t'/>
Eric Kunze58098a72022-08-05 15:40:12 -07002275 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002276 <typesupport mode="signed 8" in_out_t="i8_t"/>
2277 <typesupport mode="signed 16" in_out_t="i16_t"/>
2278 <typesupport mode="signed 32" in_out_t="i32_t"/>
Kevin Petit18548922023-03-17 17:12:30 +00002279 <typesupport mode="fp16" in_out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002280 <profile name="MI"/>
2281 <profile name="MT"/>
2282 </typesupport>
Kevin Petit18548922023-03-17 17:12:30 +00002283 <typesupport mode="bf16" in_out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002284 <profile name="MI"/>
2285 <profile name="MT"/>
2286 </typesupport>
Kevin Petit18548922023-03-17 17:12:30 +00002287 <typesupport mode="fp32" in_out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002288 <profile name="MI"/>
2289 <profile name="MT"/>
2290 </typesupport>
2291 </operator>
2292 </operatorgroup>
2293 <operatorgroup name="image">
2294 <operator>
2295 <name>RESIZE</name>
2296 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002297 <argument category="input" name="input" type="tensor_t" shape="[N,IH,IW,C]" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002298 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002299 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002300 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002301 <argument category="input" name="scale" type="shape_t" shape="[4]" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002302 <description>[scale_y_n, scale_y_d, scale_x_n, scale_x_d]</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002303 <levellimit value="scale_y_n/scale_y_d" limit="MAX_SCALE"/>
2304 <levellimit value="scale_x_n/scale_x_d" limit="MAX_SCALE"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002305 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002306 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002307 <argument category="input" name="offset" type="shape_t" shape="[2]" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002308 <description>[offset_y, offset_x]</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002309 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002310 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002311 <argument category="input" name="border" type="shape_t" shape="[2]" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002312 <description>[border_y, border_x]</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002313 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002314 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002315 <argument category="attribute" name="mode" type="tensor_t" shape="-" tensor-element-type="resize_mode_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002316 <description>BILINEAR or NEAREST</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002317 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002318 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002319 <argument category="output" name="output" type="tensor_t" shape="[N,OH,OW,C]" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002320 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002321 <rank min="4" max="4"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002322 </argument>
2323 </arguments>
2324 <types>
2325 <type name='resize_t'/>
2326 <type name='in_t'/>
2327 <type name='out_t'/>
2328 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002329 <typesupport mode="signed 8, bilinear" resize_t="i16_t" in_t="i8_t" out_t="i32_t"/>
2330 <typesupport mode="signed 8, nearest" resize_t="i16_t" in_t="i8_t" out_t="i8_t"/>
2331 <typesupport mode="signed 16, bilinear" resize_t="i16_t" in_t="i16_t" out_t="i48_t"/>
2332 <typesupport mode="signed 16, nearest" resize_t="i16_t" in_t="i16_t" out_t="i16_t"/>
Dominic Symesccde4d72022-09-28 13:10:27 +01002333 <typesupport mode="fp16" resize_t="fp16_t" in_t="fp16_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002334 <profile name="MI"/>
2335 <profile name="MT"/>
2336 </typesupport>
Dominic Symesccde4d72022-09-28 13:10:27 +01002337 <typesupport mode="bf16" resize_t="bf16_t" in_t="bf16_t" out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002338 <profile name="MI"/>
2339 <profile name="MT"/>
2340 </typesupport>
2341 <typesupport mode="fp32" resize_t="fp32_t" in_t="fp32_t" out_t="fp32_t">
2342 <profile name="MI"/>
2343 <profile name="MT"/>
2344 </typesupport>
2345 </operator>
2346 </operatorgroup>
2347 <operatorgroup name="type-conversion">
2348 <operator>
2349 <name>CAST</name>
2350 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002351 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002352 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002353 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002354 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002355 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002356 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002357 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002358 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002359 </argument>
2360 </arguments>
2361 <types>
2362 <type name='in_t'/>
2363 <type name='out_t'/>
2364 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002365 <typesupport mode="bool to signed 8" in_t="bool_t" out_t="i8_t"/>
2366 <typesupport mode="bool to signed 16" in_t="bool_t" out_t="i16_t"/>
2367 <typesupport mode="bool to signed 32" in_t="bool_t" out_t="i32_t"/>
2368 <typesupport mode="signed 8 to bool" in_t="i8_t" out_t="bool_t"/>
2369 <typesupport mode="signed 8 to signed 16" in_t="i8_t" out_t="i16_t"/>
2370 <typesupport mode="signed 8 to signed 32" in_t="i8_t" out_t="i32_t"/>
2371 <typesupport mode="signed 8 to fp16" in_t="i8_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002372 <profile name="MI"/>
2373 <profile name="MT"/>
2374 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002375 <typesupport mode="signed 8 to bf16" in_t="i8_t" out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002376 <profile name="MI"/>
2377 <profile name="MT"/>
2378 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002379 <typesupport mode="signed 8 to fp32" in_t="i8_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002380 <profile name="MI"/>
2381 <profile name="MT"/>
2382 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002383 <typesupport mode="signed 16 to bool" in_t="i16_t" out_t="bool_t"/>
2384 <typesupport mode="signed 16 to signed 8" in_t="i16_t" out_t="i8_t"/>
2385 <typesupport mode="signed 16 to signed 32" in_t="i16_t" out_t="i32_t"/>
2386 <typesupport mode="signed 16 to fp16" in_t="i16_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002387 <profile name="MI"/>
2388 <profile name="MT"/>
2389 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002390 <typesupport mode="signed 16 to bf16" in_t="i16_t" out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002391 <profile name="MI"/>
2392 <profile name="MT"/>
2393 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002394 <typesupport mode="signed 16 to fp32" in_t="i16_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002395 <profile name="MI"/>
2396 <profile name="MT"/>
2397 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002398 <typesupport mode="signed 32 to bool" in_t="i32_t" out_t="bool_t"/>
2399 <typesupport mode="signed 32 to signed 8" in_t="i32_t" out_t="i8_t"/>
2400 <typesupport mode="signed 32 to signed 16" in_t="i32_t" out_t="i16_t"/>
2401 <typesupport mode="signed 32 to fp16" in_t="i32_t" out_t="fp16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002402 <profile name="MI"/>
2403 <profile name="MT"/>
2404 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002405 <typesupport mode="signed 32 to bf16" in_t="i32_t" out_t="bf16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002406 <profile name="MI"/>
2407 <profile name="MT"/>
2408 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002409 <typesupport mode="signed 32 to fp32" in_t="i32_t" out_t="fp32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002410 <profile name="MI"/>
2411 <profile name="MT"/>
2412 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002413 <typesupport mode="bf16 to signed 8" in_t="bf16_t" out_t="i8_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002414 <profile name="MI"/>
2415 <profile name="MT"/>
2416 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002417 <typesupport mode="bf16 to signed 16" in_t="bf16_t" out_t="i16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002418 <profile name="MI"/>
2419 <profile name="MT"/>
2420 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002421 <typesupport mode="bf16 to signed 32" in_t="bf16_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002422 <profile name="MI"/>
2423 <profile name="MT"/>
2424 </typesupport>
Eric Kunze3c5f0e12022-10-06 16:23:33 -07002425 <typesupport mode="bf16 to fp32" in_t="bf16_t" out_t="fp32_t">
2426 <profile name="MI"/>
2427 <profile name="MT"/>
2428 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002429 <typesupport mode="fp16 to signed 8" in_t="fp16_t" out_t="i8_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002430 <profile name="MI"/>
2431 <profile name="MT"/>
2432 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002433 <typesupport mode="fp16 to signed 16" in_t="fp16_t" out_t="i16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002434 <profile name="MI"/>
2435 <profile name="MT"/>
2436 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002437 <typesupport mode="fp16 to signed 32" in_t="fp16_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002438 <profile name="MI"/>
2439 <profile name="MT"/>
2440 </typesupport>
Eric Kunze3c5f0e12022-10-06 16:23:33 -07002441 <typesupport mode="fp16 to fp32" in_t="fp16_t" out_t="fp32_t">
2442 <profile name="MI"/>
2443 <profile name="MT"/>
2444 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002445 <typesupport mode="fp32 to signed 8" in_t="fp32_t" out_t="i8_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002446 <profile name="MI"/>
2447 <profile name="MT"/>
2448 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002449 <typesupport mode="fp32 to signed 16" in_t="fp32_t" out_t="i16_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002450 <profile name="MI"/>
2451 <profile name="MT"/>
2452 </typesupport>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002453 <typesupport mode="fp32 to signed 32" in_t="fp32_t" out_t="i32_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002454 <profile name="MI"/>
2455 <profile name="MT"/>
2456 </typesupport>
Eric Kunze3c5f0e12022-10-06 16:23:33 -07002457 <typesupport mode="fp32 to bf16" in_t="fp32_t" out_t="bf16_t">
2458 <profile name="MI"/>
2459 <profile name="MT"/>
2460 </typesupport>
2461 <typesupport mode="fp32 to fp16" in_t="fp32_t" out_t="fp16_t">
2462 <profile name="MI"/>
2463 <profile name="MT"/>
2464 </typesupport>
Eric Kunze58098a72022-08-05 15:40:12 -07002465 </operator>
2466 <operator>
2467 <name>RESCALE</name>
2468 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002469 <argument category="input" name="input" type="tensor_t" shape="shape" tensor-element-type="in_t">
Dominic Symes8783adb2022-07-27 12:53:11 +01002470 <description>Input tensor</description>
Dominic Symese4d6a1b2022-11-04 18:00:03 +00002471 <levellimit value="rank(shape)" limit="MAX_RANK"/>
Eric Kunze42085e32023-01-09 11:16:51 -08002472 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002473 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002474 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002475 <description>Output tensor with the same shape as input</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002476 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002477 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002478 <argument category="attribute" name="input_zp" type="tensor_t" shape="-" tensor-element-type="in_t">
Eric Kunze8e14dcd2023-06-20 16:11:40 -07002479 <description>Input tensor zero point. int8/uint8 can have zero point within their valid range. uint16 zero point must be either 0 or 32768. All other types must have zero point equal to 0.</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002480 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002481 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002482 <argument category="attribute" name="output_zp" type="tensor_t" shape="-" tensor-element-type="out_t">
Eric Kunze8e14dcd2023-06-20 16:11:40 -07002483 <description>Output tensor zero point.int8/uint8 can have zero point within their valid range. uint16 zero point must be either 0 or 32768. All other types must have zero point equal to 0.</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002484 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002485 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002486 <argument category="input(MT)|attribute(BI,MI)" name="multiplier" type="tensor_t" shape="[NC]" tensor-element-type="mul_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002487 <description>Scaling multiplier array</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002488 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002489 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002490 <argument category="input(MT)|attribute(BI,MI)" name="shift" type="tensor_t" shape="[NC]" tensor-element-type="i8_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002491 <description>Scaling shift array</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002492 <rank min="1" max="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002493 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002494 <argument category="attribute" name="scale32" type="tensor_t" shape="-" tensor-element-type="bool_t">
Eric Kunzefb0284e2023-07-18 15:20:53 -07002495 <description>if (scale32) mul_t=i32_t else mul_t=i16_t</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002496 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002497 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002498 <argument category="attribute" name="double_round" type="tensor_t" shape="-" tensor-element-type="bool_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002499 <description>Select double round mode</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002500 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002501 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002502 <argument category="attribute" name="per_channel" type="tensor_t" shape="-" tensor-element-type="bool_t">
Dominic Symes8783adb2022-07-27 12:53:11 +01002503 <description>if (per_channel) NC=shape[rank(shape)-1] else NC=1</description>
Kevin Petit5333c252023-05-16 09:08:48 +01002504 <rank min="0" max="0"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002505 </argument>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002506 <argument category="attribute" name="input_unsigned" type="tensor_t" shape="-" tensor-element-type="bool_t">
2507 <description>If True, treat the input values as unsigned.</description>
2508 <rank min="0" max="0"/>
2509 </argument>
2510 <argument category="attribute" name="output_unsigned" type="tensor_t" shape="-" tensor-element-type="bool_t">
2511 <description>If True, treat the output values as unsigned.</description>
2512 <rank min="0" max="0"/>
2513 </argument>
Eric Kunze58098a72022-08-05 15:40:12 -07002514 </arguments>
2515 <types>
2516 <type name='in_t'/>
2517 <type name='out_t'/>
2518 </types>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002519 <typesupport mode="8-bit to 8-bit" in_t="i8_t" out_t="i8_t"/>
2520 <typesupport mode="8-bit to 16-bit" in_t="i8_t" out_t="i16_t"/>
2521 <typesupport mode="8-bit to 32-bit" in_t="i8_t" out_t="i32_t"/>
2522 <typesupport mode="16-bit to 8-bit" in_t="i16_t" out_t="i8_t"/>
2523 <typesupport mode="16-bit to 16-bit" in_t="i16_t" out_t="i16_t"/>
2524 <typesupport mode="16-bit to 32-bit" in_t="i16_t" out_t="i32_t"/>
2525 <typesupport mode="32-bit to 8-bit" in_t="i32_t" out_t="i8_t"/>
2526 <typesupport mode="32-bit to 16-bit" in_t="i32_t" out_t="i16_t"/>
2527 <typesupport mode="32-bit to 32-bit" in_t="i32_t" out_t="i32_t"/>
2528 <typesupport mode="48-bit to 8-bit" in_t="i48_t" out_t="i8_t"/>
2529 <typesupport mode="48-bit to 16-bit" in_t="i48_t" out_t="i16_t"/>
2530 <typesupport mode="48-bit to 32-bit" in_t="i48_t" out_t="i32_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002531 </operator>
2532 </operatorgroup>
2533 <operatorgroup name="data-node">
2534 <operator>
2535 <name>CONST</name>
2536 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002537 <argument category="attribute" name="values" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002538 <description>Constant values</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002539 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002540 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002541 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="out_t">
Eric Kunzef43fdce2023-10-30 14:14:15 -07002542 <description>Output tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002543 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002544 </argument>
2545 </arguments>
2546 <types>
2547 <type name='out_t' />
2548 </types>
2549 <typesupport mode="Boolean" out_t="bool_t" />
Eric Kunzefb0284e2023-07-18 15:20:53 -07002550 <typesupport mode="4-bit" out_t="i4_t" />
2551 <typesupport mode="8-bit" out_t="i8_t" />
2552 <typesupport mode="16-bit" out_t="i16_t" />
2553 <typesupport mode="32-bit" out_t="i32_t" />
2554 <typesupport mode="48-bit" out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -07002555 <typesupport mode="fp16" out_t="fp16_t" >
2556 <profile name="MI"/>
2557 <profile name="MT"/>
2558 </typesupport>
2559 <typesupport mode="bf16" out_t="bf16_t" >
2560 <profile name="MI"/>
2561 <profile name="MT"/>
2562 </typesupport>
2563 <typesupport mode="fp32" out_t="fp32_t" >
2564 <profile name="MI"/>
2565 <profile name="MT"/>
2566 </typesupport>
2567 </operator>
2568 <operator>
2569 <name>IDENTITY</name>
2570 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002571 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002572 <description>Input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002573 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002574 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002575 <argument category="output" name="output" type="tensor_t" shape="shape" tensor-element-type="in_out_t">
Eric Kunze58098a72022-08-05 15:40:12 -07002576 <description>Output tensor of the same type, size as the input tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002577 <rank min="0" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002578 </argument>
2579 </arguments>
2580 <types>
2581 <type name='in_out_t' />
2582 </types>
2583 <typesupport mode="Boolean" in_out_t="bool_t" />
Dominic Symes34f67da2023-12-15 14:35:38 +00002584 <typesupport mode="4-bit" in_out_t="i4_t" />
Eric Kunzefb0284e2023-07-18 15:20:53 -07002585 <typesupport mode="8-bit" in_out_t="i8_t" />
2586 <typesupport mode="16-bit" in_out_t="i16_t" />
2587 <typesupport mode="32-bit" in_out_t="i32_t" />
Dominic Symes34f67da2023-12-15 14:35:38 +00002588 <typesupport mode="48-bit" in_out_t="i48_t" />
Eric Kunze58098a72022-08-05 15:40:12 -07002589 <typesupport mode="fp16" in_out_t="fp16_t" >
2590 <profile name="MI"/>
2591 <profile name="MT"/>
2592 </typesupport>
2593 <typesupport mode="bf16" in_out_t="bf16_t" >
2594 <profile name="MI"/>
2595 <profile name="MT"/>
2596 </typesupport>
2597 <typesupport mode="fp32" in_out_t="fp32_t" >
2598 <profile name="MI"/>
2599 <profile name="MT"/>
2600 </typesupport>
2601 </operator>
2602 </operatorgroup>
Eric Kunze633a3d92023-07-11 14:10:44 -07002603 <operatorgroup name="custom">
2604 <operator>
2605 <name>CUSTOM</name>
2606 <arguments>
2607 <argument category="input" name="input_list" type="tensor_list_t" shape="-" tensor-element-type="-">
2608 <description>List of input tensors</description>
2609 </argument>
Jerry Ge946ba352023-10-31 15:52:26 +00002610 <argument category="attribute" name="operator_name" type="String" shape="-" tensor-element-type="-">
Eric Kunze633a3d92023-07-11 14:10:44 -07002611 <description>String which tells the backend which custom operator is being called</description>
2612 </argument>
Jerry Ge946ba352023-10-31 15:52:26 +00002613 <argument category="attribute" name="domain_name" type="String" shape="-" tensor-element-type="-">
Eric Kunze633a3d92023-07-11 14:10:44 -07002614 <description>String idenifier which can help avoid name collisions on the operator field.
2615 Different implementations of a given operator would be in different domains.
2616 Implementations can choose which domains they want to support.</description>
2617 </argument>
2618 <argument category="attribute" name="implementation_attrs" type="String" shape="-" tensor-element-type="-">
2619 <description>String value containing implementation specific attributes which apply to the operation</description>
2620 </argument>
2621 <argument category="output" name="output_list" type="tensor_list_t" shape="-" tensor-element-type="-">
2622 <description>List of output tensors</description>
2623 </argument>
2624 </arguments>
2625 </operator>
2626 </operatorgroup>
Eric Kunze58098a72022-08-05 15:40:12 -07002627 <operatorgroup name="control-flow">
2628 <operator>
2629 <name>COND_IF</name>
2630 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002631 <argument category="input" name="condition" type="tensor_t" shape="shape" tensor-element-type="bool_t">
Dominic Symes4370b932022-11-30 14:25:20 +00002632 <description>Input condition as a size 1 tensor</description>
Eric Kunze42085e32023-01-09 11:16:51 -08002633 <rank min="1" max="MAX_RANK"/>
Eric Kunze58098a72022-08-05 15:40:12 -07002634 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002635 <argument category="input" name="input_list" type="tensor_list_t" shape="-" tensor-element-type="-">
Kevin Petitc0e467a2023-05-10 16:21:23 +01002636 <description>List of input tensors</description>
2637 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002638 <argument category="attribute" name="then_graph" type="tosa_graph_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002639 <description>TOSA graph to execute if condition is true</description>
2640 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002641 <argument category="attribute" name="else_graph" type="tosa_graph_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002642 <description>TOSA graph to execute if condition is false</description>
2643 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002644 <argument category="output" name="output_list" type="tensor_list_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002645 <description>List of output tensors</description>
2646 </argument>
2647 </arguments>
2648 </operator>
2649 <operator>
2650 <name>WHILE_LOOP</name>
2651 <arguments>
Kevin Petit5333c252023-05-16 09:08:48 +01002652 <argument category="input" name="input_list" type="tensor_list_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002653 <description>List of input tensors</description>
2654 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002655 <argument category="attribute" name="cond_graph" type="tosa_graph_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002656 <description>TOSA graph to evaluate the condition</description>
2657 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002658 <argument category="attribute" name="body_graph" type="tosa_graph_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002659 <description>TOSA graph to execute the loop body</description>
2660 </argument>
Kevin Petit5333c252023-05-16 09:08:48 +01002661 <argument category="output" name="output_list" type="tensor_list_t" shape="-" tensor-element-type="-">
Eric Kunze58098a72022-08-05 15:40:12 -07002662 <description>List of output tensors</description>
2663 </argument>
2664 </arguments>
2665 </operator>
2666 </operatorgroup>
Jerry Ge0fc278b2023-08-11 16:43:30 +00002667 <operatorgroup name="variable">
2668 <operator>
2669 <name>VARIABLE</name>
2670 <arguments>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002671 <argument category="attribute" name="uid" type="tensor_t" shape="-" tensor-element-type="i32_t">
Jerry Ge0fc278b2023-08-11 16:43:30 +00002672 <description>Globally unique identifier for the declared variable tensor.</description>
2673 <rank min="0" max="0"/>
2674 </argument>
Eric Kunze526f6c72024-01-12 17:18:42 -08002675 <argument category="attribute" name="var_shape" type="tensor_t" shape="var_shape" tensor-element-type="size_t">
Jerry Ge0fc278b2023-08-11 16:43:30 +00002676 <description>The variable tensor shape</description>
2677 <rank min="1" max="1"/>
2678 </argument>
2679 <argument category="attribute" name="type" type="tensor_t" shape="-" tensor-element-type="var_t">
2680 <description>Type of the tensor variable elements.</description>
2681 <rank min="0" max="0"/>
2682 </argument>
2683 <argument category="attribute" name="initial_value" type="tensor_t" shape="shape" tensor-element-type="in_t" optional="true">
2684 <description>Initial value of the variable tensor. This argument is optional with default value NULL.</description>
2685 <levellimit value="rank(shape)" limit="MAX_RANK"/>
2686 <rank min="0" max="MAX_RANK"/>
2687 </argument>
2688 </arguments>
2689 </operator>
2690 <operator>
2691 <name>VARIABLE_WRITE</name>
2692 <arguments>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002693 <argument category="attribute" name="uid" type="tensor_t" shape="-" tensor-element-type="i32_t">
Jerry Ge0fc278b2023-08-11 16:43:30 +00002694 <description>Globally unique identifier of the variable tensor that is writing to</description>
2695 <rank min="0" max="0"/>
2696 </argument>
2697 <argument category="input" name="input1" type="tensor_t" shape="shape" tensor-element-type="in_t">
2698 <description>Input tensor</description>
2699 <levellimit value="rank(shape)" limit="MAX_RANK"/>
2700 <rank min="0" max="MAX_RANK"/>
2701 </argument>
2702 </arguments>
2703 </operator>
2704 <operator>
2705 <name>VARIABLE_READ</name>
2706 <arguments>
Eric Kunzefb0284e2023-07-18 15:20:53 -07002707 <argument category="attribute" name="uid" type="tensor_t" shape="-" tensor-element-type="i32_t">
Jerry Ge0fc278b2023-08-11 16:43:30 +00002708 <description>Globally unique identifier of the variable tensor that is reading from </description>
2709 <rank min="0" max="0"/>
2710 </argument>
2711 <argument category="output" name="output1" type="tensor_t" shape="shape" tensor-element-type="out_t">
2712 <description>Output tensor</description>
2713 <levellimit value="rank(shape)" limit="MAX_RANK"/>
2714 <rank min="0" max="MAX_RANK"/>
2715 </argument>
2716 </arguments>
2717 </operator>
2718 </operatorgroup>
Eric Kunze526f6c72024-01-12 17:18:42 -08002719 <operatorgroup name="shape">
2720 <operator>
2721 <name>ADD_SHAPE</name>
2722 <arguments>
2723 <argument category="input" name="input1" type="shape_t" shape="-" tensor-element-type="-">
2724 <description>Input 1</description>
2725 </argument>
2726 <argument category="input" name="input2" type="shape_t" shape="-" tensor-element-type="-">
2727 <description>Input 2</description>
2728 </argument>
2729 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2730 <description>Output shape</description>
2731 </argument>
2732 </arguments>
2733 </operator>
2734 <operator>
2735 <name>CONCAT_SHAPE</name>
2736 <arguments>
2737 <argument category="input" name="input1" type="shape_list_t" shape="-" tensor-element-type="-">
2738 <description>List of input shape values</description>
2739 </argument>
2740 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2741 <description>Output shape</description>
2742 </argument>
2743 </arguments>
2744 </operator>
2745 <operator>
2746 <name>CONST_SHAPE</name>
2747 <arguments>
2748 <argument category="attribute" name="values" type="shape_t" shape="-" tensor-element-type="-">
2749 <description>Constant shape</description>
2750 </argument>
2751 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2752 <description>Output shape</description>
2753 </argument>
2754 </arguments>
2755 </operator>
2756 <operator>
2757 <name>DIV_SHAPE</name>
2758 <arguments>
2759 <argument category="input" name="input1" type="shape_t" shape="-" tensor-element-type="-">
2760 <description>Input 1</description>
2761 </argument>
2762 <argument category="input" name="input2" type="shape_t" shape="-" tensor-element-type="-">
2763 <description>Input 2</description>
2764 </argument>
2765 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2766 <description>Output shape</description>
2767 </argument>
2768 </arguments>
2769 </operator>
2770 <operator>
2771 <name>MUL_SHAPE</name>
2772 <arguments>
2773 <argument category="input" name="input1" type="shape_t" shape="-" tensor-element-type="-">
2774 <description>Input 1</description>
2775 </argument>
2776 <argument category="input" name="input2" type="shape_t" shape="-" tensor-element-type="-">
2777 <description>Input 2</description>
2778 </argument>
2779 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2780 <description>Output shape</description>
2781 </argument>
2782 </arguments>
2783 </operator>
2784 <operator>
2785 <name>SUB_SHAPE</name>
2786 <arguments>
2787 <argument category="input" name="input1" type="shape_t" shape="-" tensor-element-type="-">
2788 <description>Input 1</description>
2789 </argument>
2790 <argument category="input" name="input2" type="shape_t" shape="-" tensor-element-type="-">
2791 <description>Input 2</description>
2792 </argument>
2793 <argument category="output" name="output" type="shape_t" shape="-" tensor-element-type="-">
2794 <description>Output shape</description>
2795 </argument>
2796 </arguments>
2797 </operator>
2798 </operatorgroup>
Eric Kunze58098a72022-08-05 15:40:12 -07002799 </operators>
Eric Kunze544227e2023-02-13 16:19:34 -08002800
Kevin Petit53e76592023-04-27 17:28:16 +01002801 <enum name="resize_mode_t" description="Valid resize types">
Eric Kunze544227e2023-02-13 16:19:34 -08002802 <enumval value="0" name="NEAREST_NEIGHBOR" description="Nearest neighbor resize"/>
2803 <enumval value="1" name="BILINEAR" description="Bilinear resize"/>
2804 </enum>
2805
2806 <enum name="acc_size_t" description="Allowed accumulator sizes">
2807 <enumval value="0" name="INT32" description="32-bit integer"/>
2808 <enumval value="1" name="FP16" description="16-bit floating-point"/>
2809 <enumval value="2" name="FP32" description="32-bit floating-point"/>
2810 </enum>
2811
Jerry Ge0fc278b2023-08-11 16:43:30 +00002812 <enum name="var_t" description="Variable tensor data type">
2813 <enumval value="0" name="BOOLEAN" description="Boolean"/>
2814 <enumval value="1" name="INT8" description="8-bit integer"/>
2815 <enumval value="2" name="INT16" description="16-bit integer"/>
2816 <enumval value="3" name="INT32" description="32-bit integer"/>
2817 <enumval value="4" name="FP16" description="16-bit floating-point"/>
2818 <enumval value="5" name="BF16" description="16-bit brain floating-point"/>
2819 <enumval value="6" name="FP32" description="32-bit floating-point"/>
2820 </enum>
2821
Eric Kunze58098a72022-08-05 15:40:12 -07002822</tosa>