aboutsummaryrefslogtreecommitdiff
path: root/tosa.xml
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2022-08-05 15:40:12 -0700
committerEric Kunze <eric.kunze@arm.com>2022-08-19 14:19:28 -0700
commit58098a7b1ffcf41da759f862deb753c82fe5b4b0 (patch)
tree75b61a482e23293b8af85adf6210f2d3e4e5695d /tosa.xml
parent6361d1664c7b82ecc3afdd0eb87e96afea430f89 (diff)
downloadspecification-58098a7b1ffcf41da759f862deb753c82fe5b4b0.tar.gz
Machine parsable specification
This converts portions of the asciidoc specification into an xml document and schema. For the html and pdf outputs, the xml is converted to asciidoc files that are included into the existing specification. The xml allows future automated uses of the tosa specification while maintaining rough compatibility with the existing document. No significant functional changes are included in this change. Change-Id: I7f1f95c527638e270c157d58fcdec6a3510daea5 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Diffstat (limited to 'tosa.xml')
-rw-r--r--tosa.xml2160
1 files changed, 2160 insertions, 0 deletions
diff --git a/tosa.xml b/tosa.xml
new file mode 100644
index 0000000..8900721
--- /dev/null
+++ b/tosa.xml
@@ -0,0 +1,2160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tosa SYSTEM "tosa.dtd">
+<tosa>
+ <profiles>
+ <profile name="BI">Base Inference</profile>
+ <profile name="MI">Main Inference</profile>
+ <profile name="MT">Main Training</profile>
+ </profiles>
+ <operators>
+ <operatorgroup name="tensor">
+ <operator>
+ <name>ARGMAX</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor, with rank = rank(shape1)-1</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8" in_t="int8_t" out_t="int32_t"/>
+ <typesupport mode="signed 16" in_t="int16_t" out_t="int32_t" />
+ <typesupport mode="fp16" in_t="fp16_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_t="bf16_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_t="fp32_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>AVG_POOL2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="[N,IH,IW,C]">
+ <description>Input tensor 4D</description>
+ </argument>
+ <argument category="attribute" name="kernel" type="int32_t*" shape="[2]">
+ <description>[kernel_y, kernel_x]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
+ <description>[stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
+ <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_out_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="output_zp" type="in_out_t" shape="-">
+ <description>Output tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="[N,OH,OW,C]">
+ <description>Output tensor 4D</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t' />
+ <type name='acc_t' />
+ </types>
+ <typesupport mode="signed 8 with int32 accumulate" in_out_t="int8_t" acc_t="int32_t" />
+ <typesupport mode="signed 16 with int32 accumulate" in_out_t="int16_t" acc_t="int32_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_out_t="fp16_t" acc_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_out_t="fp16_t" acc_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_out_t="bf16_t" acc_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_out_t="fp32_t" acc_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>CONV2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,IC]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="weight" type="weight_t*" shape="[OC,KH,KW,IC]">
+ <description>Weight kernel size KH x KW</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="bias" type="out_t*" shape="[OC]">
+ <description>Per output channel bias data.</description>
+ </argument>
+ <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
+ <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
+ <description>[stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="dilation" type="int32_t*" shape="[2]">
+ <description>[dilation_y, dilation_x]</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
+ <description>Weight zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,OC]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='weight_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>CONV3D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,ID,IH,IW,IC]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="weight" type="weight_t*" shape="[OC,KD,KH,KW,IC]">
+ <description>Weight kernel size KDxKHxKW</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="bias" type="out_t*" shape="[OC]">
+ <description>Per output channel bias data.</description>
+ </argument>
+ <argument category="attribute" name="pad" type="int32_t*" shape="[6]">
+ <description>[pad_d0, pad_d1, pad_top, pad_bottom, pad_left, pad_right]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[3]">
+ <description>[stride_d, stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="dilation" type="int32_t*" shape="[3]">
+ <description>[dilation_d, dilation_y, dilation_x]</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
+ <description>Weight zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OD,OH,OW,OC]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='weight_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>DEPTHWISE_CONV2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,H,W,C]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="weight" type="weight_t*" shape="[KH,KW,C,M]">
+ <description>Weight kernel size KH x KW</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="bias" type="out_t*" shape="[C*M]">
+ <description>Per output channel bias data.</description>
+ </argument>
+ <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
+ <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
+ <description>[stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="dilation" type="int32_t*" shape="[2]">
+ <description>[dilation_y, dilation_x]</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
+ <description>Weight zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,C*M]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='weight_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>FFT2D</name>
+ <arguments>
+ <argument category="input" name="input_real" type="in_out_t*" shape="[N,H,W]">
+ <description>Real part of the complex input. H,W must be powers of two.</description>
+ </argument>
+ <argument category="input" name="input_imag" type="in_out_t*" shape="[N,H,W]">
+ <description>Imaginary part of the complex input. H,W must be powers of two.</description>
+ </argument>
+ <argument category="attribute" name="inverse" type="bool_t" shape="-">
+ <description>false for forward FFT, true for inverse FFT</description>
+ </argument>
+ <argument category="output" name="output_real" type="in_out_t*" shape="[N,H,W]">
+ <description>Real part of the complex output.</description>
+ </argument>
+ <argument category="output" name="output_imag" type="in_out_t*" shape="[N,H,W]">
+ <description>Imaginary part of the complex output.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t' />
+ </types>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>FULLY_CONNECTED</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,IC]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="weight" type="weight_t*" shape="[OC,IC]">
+ <description>Weights</description>
+ </argument>
+ <argument category="attribute" name="bias" type="out_t*" shape="[OC]">
+ <description>Per output channel bias data.</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
+ <description>Weight zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OC]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='weight_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>MATMUL</name>
+ <arguments>
+ <argument category="input" name="A" type="in_t*" shape="[N,H,C]">
+ <description>Input tensor A, N matrices of size HxC</description>
+ </argument>
+ <argument category="input" name="B" type="in_t*" shape="[N,C,W]">
+ <description>Input tensor B, N matrices of size CxW</description>
+ </argument>
+ <argument category="attribute" name="A_zp" type="in_t" shape="-">
+ <description>Input tensor A zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="B_zp" type="in_t" shape="-">
+ <description>Input tensor B zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,H,W]">
+ <description>Output tensor, N matrices of size HxW</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>MAX_POOL2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="[N,IH,IW,C]">
+ <description>Input tensor 4D</description>
+ </argument>
+ <argument category="attribute" name="kernel" type="int32_t*" shape="[2]">
+ <description>[kernel_y, kernel_x]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
+ <description>[stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="pad" type="int32_t*" shape="[4]">
+ <description>[pad_top, pad_bottom, pad_left, pad_right]</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="[N,OH,OW,C]">
+ <description>Output tensor 4D</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t' />
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t" />
+ <typesupport mode="16-bit" in_out_t="int16_t" />
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>RFFT2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="[N,H,W]">
+ <description>Real input. H,W must be powers of two.</description>
+ </argument>
+ <argument category="output" name="output_real" type="in_out_t*" shape="[N,H/2 + 1,W/2 + 1]">
+ <description>Real part of the complex output</description>
+ </argument>
+ <argument category="output" name="output_imag" type="in_out_t*" shape="[N,H/2 + 1,W/2 + 1]">
+ <description>Imaginary part of the complex output.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t' />
+ </types>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>TRANSPOSE_CONV2D</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,IC]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="weight" type="weight_t*" shape="[OC,KH,KW,IC]">
+ <description>Weight kernel size KH x KW</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="bias" type="out_t*" shape="[OC]">
+ <description>Per output channel bias data.</description>
+ </argument>
+ <argument category="attribute" name="out_pad" type="int32_t*" shape="[4]">
+ <description>[out_pad_top, out_pad_bottom, out_pad_left, out_pad_right]</description>
+ </argument>
+ <argument category="attribute" name="stride" type="int32_t*" shape="[2]">
+ <description>[stride_y, stride_x]</description>
+ </argument>
+ <argument category="attribute" name="out_shape" type="int32_t*" shape="[4]">
+ <description>[N,OH,OW,OC]</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="weight_zp" type="weight_t" shape="-">
+ <description>Weight zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,OC]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t' />
+ <type name='weight_t' />
+ <type name='out_t' />
+ </types>
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="int8_t" weight_t="int8_t" out_t="int32_t" />
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="int8_t" weight_t="int4_t" out_t="int32_t" />
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="int16_t" weight_t="int8_t" out_t="int48_t" />
+ <typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" weight_t="bf16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" weight_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="activation">
+ <operator>
+ <name>CLAMP</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="min_val" type="in_out_t" shape="-">
+ <description>Minimum clip value</description>
+ </argument>
+ <argument category="attribute" name="max_val" type="in_out_t" shape="-">
+ <description>Maximum clip value</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type and shape as input</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>SIGMOID</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type and shape as input</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>TANH</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type and shape as input</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="elementwise-binary">
+ <operator>
+ <name>ADD</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>ARITHMETIC_RIGHT_SHIFT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="attribute" name="round" type="bool_t" shape="-">
+ <description>If true then the shift is rounded</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>BITWISE_AND</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>BITWISE_OR</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>BITWISE_XOR</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>INTDIV</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>LOGICAL_AND</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>LOGICAL_LEFT_SHIFT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>LOGICAL_RIGHT_SHIFT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>LOGICAL_OR</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>LOGICAL_XOR</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>MAXIMUM</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>MINIMUM</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>MUL</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="shift" type="uint6_t" shape="-">
+ <description>Result right shift (int32_t data type only)</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_t="int8_t" out_t="int32_t"/>
+ <typesupport mode="signed 16" in_t="int16_t" out_t="int32_t"/>
+ <typesupport mode="signed 32" in_t="int32_t" out_t="int32_t"/>
+ <typesupport mode="fp16" in_t="fp16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_t="bf16_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>POW</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor from 1 to 4 dims</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>SUB</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>TABLE</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="table" type="table_t*" shape="[TABLE_SIZE]">
+ <description>Lookup table tensor</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='table_t'/>
+ <type name='out_t'/>
+ <type name='TABLE_SIZE'/>
+ </types>
+ <typesupport mode="signed 8" in_t="int8_t" table_t="int8_t" TABLE_SIZE="256" out_t="int8_t"/>
+ <typesupport mode="signed 16" in_t="int16_t" table_t="int16_t" TABLE_SIZE="513" out_t="int32_t"/>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="elementwise-unary">
+ <operator>
+ <name>ABS</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>BITWISE_NOT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>CEIL</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>CLZ</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ </operator>
+ <operator>
+ <name>EXP</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>FLOOR</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>LOG</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>LOGICAL_NOT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="Boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>NEGATE</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="input1_zp" type="in_out_t" shape="-">
+ <description>Input 1 zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="output_zp" type="in_out_t" shape="-">
+ <description>Output zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ <type name='acc_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t" acc_t="int32_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t" acc_t="int32_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t" acc_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" acc_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>RECIPROCAL</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>RSQRT</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="elementwise-ternary">
+ <operator>
+ <name>SELECT</name>
+ <arguments>
+ <argument category="input" name="input1" type="cmp_t" shape="shape1">
+ <description>Input selector tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_out_t*" shape="shape2">
+ <description>Input value tensor if input1 is True</description>
+ </argument>
+ <argument category="input" name="input3" type="in_out_t*" shape="shape3">
+ <description>Input value tensor if input1 is False</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type as input2 and input3, with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='cmp_t'/>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="Boolean" cmp_t="bool_t" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" cmp_t="bool_t" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" cmp_t="bool_t" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" cmp_t="bool_t" in_out_t="int32_t"/>
+ <typesupport mode="fp16" cmp_t="bool_t" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" cmp_t="bool_t" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" cmp_t="bool_t" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="comparison">
+ <operator>
+ <name>EQUAL</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
+ <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>GREATER</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
+ <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>GREATER_EQUAL</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="input" name="input2" type="in_t*" shape="shape2">
+ <description>Input tensor with the same rank as input1</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor with broadcast shape if necessary</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_t="int32_t" out_t="bool_t"/>
+ <typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="reduction">
+ <operator>
+ <name>REDUCE_ALL</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>REDUCE_ANY</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ </operator>
+ <operator>
+ <name>REDUCE_MAX</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>REDUCE_MIN</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>REDUCE_PRODUCT</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>REDUCE_SUM</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reduce, in range from 0 to rank(shape1)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same rank as the input tensor.</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="data-layout">
+ <operator>
+ <name>CONCAT</name>
+ <arguments>
+ <!-- FIXME express list of tensors better -->
+ <argument category="input" name="input1" type="in_out_t*" shape="shapes1[]">
+ <description>List of input tensors. All inputs must have the same rank and data type</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis along which concatenation is to occur, in range from 0 to rank(shape)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>PAD</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="padding" type="int32_t" shape="[rank(shape1),2]">
+ <description>Number of pad elements at the start and end of each dimension</description>
+ </argument>
+ <argument category="attribute" name="pad_const" type="in_out_t" shape="-">
+ <description>Constant value to be used as padding</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>RESHAPE</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="new_shape" type="int32_t" shape="[rank(output)]">
+ <description>List of values, with each element giving the size of the result tensor for the given dimension. At most one dimension may be given as -1 to automatically calculate the dimension size.</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>REVERSE</name>
+ <arguments>
+ <argument category="input" name="input" type="in_out_t*" shape="shape">
+ <description>Input tensor from 1 to 4 dims</description>
+ </argument>
+ <argument category="attribute" name="axis" type="int32_t" shape="-">
+ <description>Axis to reverse, in range from 0 to rank(shape)-1</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor. Same shape as input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>SLICE</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="start" type="int32_t" shape="[rank(input1)]">
+ <description>List of integer coordinates, of length equal to the rank of input1. Start coordinate for slicing.</description>
+ </argument>
+ <argument category="attribute" name="size" type="int32_t" shape="[rank(input1)]">
+ <description>List of integer size values, of length equal to the rank of input1. Size of the input to be
+used.</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>TILE</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor with rank from 1 to 4</description>
+ </argument>
+ <argument category="attribute" name="multiplies" type="int32_t" shape="[rank(shape1)]">
+ <description>Number of times to replicate input1 in each dimension</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, rank as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>TRANSPOSE</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape1">
+ <description>Input tensor with minimum rank of one.</description>
+ </argument>
+ <argument category="attribute" name="perms" type="int32_t" shape="[rank(input1)]">
+ <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>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of same type, rank as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t'/>
+ </types>
+ <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="signed 8" in_out_t="int8_t"/>
+ <typesupport mode="signed 16" in_out_t="int16_t"/>
+ <typesupport mode="signed 32" in_out_t="int32_t"/>
+ <typesupport mode="fp16" in_out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="scatter-gather">
+ <operator>
+ <name>GATHER</name>
+ <arguments>
+ <argument category="input" name="values" type="value_t*" shape="[N,K,C]">
+ <description>3D value tensor</description>
+ </argument>
+ <argument category="input" name="indices" type="index_t*" shape="[N,W]">
+ <description>2D index tensor</description>
+ </argument>
+ <argument category="output" name="output" type="value_t*" shape="[N,W,C]">
+ <description>3D output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='index_t'/>
+ <type name='value_t'/>
+ </types>
+ <typesupport mode="signed 8" index_t="int32_t" value_t="int8_t"/>
+ <typesupport mode="signed 16" index_t="int32_t" value_t="int16_t"/>
+ <typesupport mode="signed 32" index_t="int32_t" value_t="int32_t"/>
+ <typesupport mode="fp16" index_t="int32_t" value_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" index_t="int32_t" value_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" index_t="int32_t" value_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>SCATTER</name>
+ <arguments>
+ <argument category="input" name="values_in" type="value_t*" shape="[N,K,C]">
+ <description>3D values in tensor</description>
+ </argument>
+ <argument category="input" name="indices" type="index_t*" shape="[N,W]">
+ <description>2D index tensor</description>
+ </argument>
+ <argument category="input" name="input" type="value_t*" shape="[N,W,C]">
+ <description>3D input tensor</description>
+ </argument>
+ <argument category="output" name="values_out" type="value_t*" shape="[N,K,C]">
+ <description>3D output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='index_t'/>
+ <type name='value_t'/>
+ </types>
+ <typesupport mode="signed 8" index_t="int32_t" value_t="int8_t"/>
+ <typesupport mode="signed 16" index_t="int32_t" value_t="int16_t"/>
+ <typesupport mode="signed 32" index_t="int32_t" value_t="int32_t"/>
+ <typesupport mode="fp16" index_t="int32_t" value_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" index_t="int32_t" value_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" index_t="int32_t" value_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="image">
+ <operator>
+ <name>RESIZE</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t*" shape="[N,IH,IW,C]">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="attribute" name="scale" type="int16_t*" shape="[4]">
+ <description>[scale_y_n, scale_y_d, scale_x_n, scale_x_d]</description>
+ </argument>
+ <argument category="attribute" name="offset" type="int16_t*" shape="[2]">
+ <description>[offset_y, offset_x]</description>
+ </argument>
+ <argument category="attribute" name="border" type="int32_t*" shape="[2]">
+ <description>[border_y, border_x]</description>
+ </argument>
+ <argument category="attribute" name="mode" type="mode_t" shape="-">
+ <description>BILINEAR or NEAREST</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="[N,OH,OW,C]">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='resize_t'/>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 8, bilinear" resize_t="int16_t" in_t="int8_t" out_t="int32_t"/>
+ <typesupport mode="signed 8, nearest" resize_t="int16_t" in_t="int8_t" out_t="int8_t"/>
+ <typesupport mode="signed 16, bilinear" resize_t="int16_t" in_t="int16_t" out_t="int48_t"/>
+ <typesupport mode="signed 16, nearest" resize_t="int16_t" in_t="int16_t" out_t="int16_t"/>
+ <typesupport mode="fp16" resize_t="fp16_t" in_t="fp32_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" resize_t="fp32_t" in_t="bf16_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" resize_t="fp32_t" in_t="fp32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="type-conversion">
+ <operator>
+ <name>CAST</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="out_t" shape="shape">
+ <description>Output tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="bool to signed 8" in_t="bool_t" out_t="int8_t"/>
+ <typesupport mode="bool to signed 16" in_t="bool_t" out_t="int16_t"/>
+ <typesupport mode="bool to signed 32" in_t="bool_t" out_t="int32_t"/>
+ <typesupport mode="signed 8 to bool" in_t="int8_t" out_t="bool_t"/>
+ <typesupport mode="signed 8 to signed 16" in_t="int8_t" out_t="int16_t"/>
+ <typesupport mode="signed 8 to signed 32" in_t="int8_t" out_t="int32_t"/>
+ <typesupport mode="signed 8 to fp16" in_t="int8_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 8 to bf16" in_t="int8_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 8 to fp32" in_t="int8_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 16 to bool" in_t="int16_t" out_t="bool_t"/>
+ <typesupport mode="signed 16 to signed 8" in_t="int16_t" out_t="int8_t"/>
+ <typesupport mode="signed 16 to signed 32" in_t="int16_t" out_t="int32_t"/>
+ <typesupport mode="signed 16 to fp16" in_t="int16_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 16 to bf16" in_t="int16_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 16 to fp32" in_t="int16_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 32 to bool" in_t="int32_t" out_t="bool_t"/>
+ <typesupport mode="signed 32 to signed 8" in_t="int32_t" out_t="int8_t"/>
+ <typesupport mode="signed 32 to signed 16" in_t="int32_t" out_t="int16_t"/>
+ <typesupport mode="signed 32 to fp16" in_t="int32_t" out_t="fp16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 32 to bf16" in_t="int32_t" out_t="bf16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="signed 32 to fp32" in_t="int32_t" out_t="fp32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 to signed 8" in_t="bf16_t" out_t="int8_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 to signed 16" in_t="bf16_t" out_t="int16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16 to signed 32" in_t="bf16_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 to signed 8" in_t="fp16_t" out_t="int8_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 to signed 16" in_t="fp16_t" out_t="int16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp16 to signed 32" in_t="fp16_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 to signed 8" in_t="fp32_t" out_t="int8_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 to signed 16" in_t="fp32_t" out_t="int16_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32 to signed 32" in_t="fp32_t" out_t="int32_t">
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>RESCALE</name>
+ <arguments>
+ <argument category="input" name="input" type="in_t" shape="shape">
+ <description>Input tensor from 1 to 4 dims</description>
+ </argument>
+ <argument category="output" name="output" type="out_t" shape="shape">
+ <description>Output tensor with the same shape as input</description>
+ </argument>
+ <argument category="attribute" name="input_zp" type="in_t" shape="-">
+ <description>Input tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="attribute" name="output_zp" type="out_t" shape="-">
+ <description>Output tensor zero point. Must be zero for non-int8 types.</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="multiplier" type="mul_t*" shape="[NC]">
+ <description>Scaling multiplier array</description>
+ </argument>
+ <argument category="input(MT)|attribute(BI,MI)" name="shift" type="uint6_t*" shape="[NC]">
+ <description>Scaling shift array</description>
+ </argument>
+ <argument category="attribute" name="scale32" type="bool_t" shape="-">
+ <description>if (scale32) mul_t=int32_t else mul_t=int16_t</description>
+ </argument>
+ <argument category="attribute" name="double_round" type="bool_t" shape="-">
+ <description>Select double round mode</description>
+ </argument>
+ <argument category="attribute" name="per_channel" type="bool_t" shape="-">
+ <description>if (per_channel) NC=shape[dims-1] else NC=1</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_t'/>
+ <type name='out_t'/>
+ </types>
+ <typesupport mode="signed 8 to signed 8" in_t="int8_t" out_t="int8_t"/>
+ <typesupport mode="signed 8 to signed 16" in_t="int8_t" out_t="int16_t"/>
+ <typesupport mode="signed 8 to signed 32" in_t="int8_t" out_t="int32_t"/>
+ <typesupport mode="signed 8 to unsigned 8" in_t="int8_t" out_t="uint8_t"/>
+ <typesupport mode="signed 16 to signed 8" in_t="int16_t" out_t="int8_t"/>
+ <typesupport mode="signed 16 to signed 16" in_t="int16_t" out_t="int16_t"/>
+ <typesupport mode="signed 16 to signed 32" in_t="int16_t" out_t="int32_t"/>
+ <typesupport mode="signed 16 to unsigned 8" in_t="int16_t" out_t="uint8_t"/>
+ <typesupport mode="signed 16 to unsigned 16" in_t="int16_t" out_t="uint16_t"/>
+ <typesupport mode="signed 32 to signed 8" in_t="int32_t" out_t="int8_t"/>
+ <typesupport mode="signed 32 to signed 16" in_t="int32_t" out_t="int16_t"/>
+ <typesupport mode="signed 32 to signed 32" in_t="int32_t" out_t="int32_t"/>
+ <typesupport mode="signed 48 to signed 8" in_t="int48_t" out_t="int8_t"/>
+ <typesupport mode="signed 48 to signed 16" in_t="int48_t" out_t="int16_t"/>
+ <typesupport mode="signed 48 to signed 32" in_t="int48_t" out_t="int32_t"/>
+ <typesupport mode="unsigned 8 to signed 8" in_t="uint8_t" out_t="int8_t"/>
+ <typesupport mode="unsigned 8 to signed 16" in_t="uint8_t" out_t="int16_t"/>
+ <typesupport mode="unsigned 16 to signed 16" in_t="uint16_t" out_t="int16_t"/>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="data-node">
+ <operator>
+ <name>CONST</name>
+ <arguments>
+ <argument category="attribute" name="values" type="out_t*" shape="shape">
+ <description>Constant values</description>
+ </argument>
+ <argument category="output" name="output" type="out_t*" shape="shape">
+ <description>Output tensor of the same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='out_t' />
+ </types>
+ <typesupport mode="Boolean" out_t="bool_t" />
+ <typesupport mode="signed 8" out_t="int8_t" />
+ <typesupport mode="signed 16" out_t="int16_t" />
+ <typesupport mode="signed 32" out_t="int32_t" />
+ <typesupport mode="fp16" out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ <operator>
+ <name>IDENTITY</name>
+ <arguments>
+ <argument category="input" name="input1" type="in_out_t*" shape="shape">
+ <description>Input tensor</description>
+ </argument>
+ <argument category="output" name="output" type="in_out_t*" shape="shape">
+ <description>Output tensor of the same type, size as the input tensor</description>
+ </argument>
+ </arguments>
+ <types>
+ <type name='in_out_t' />
+ </types>
+ <typesupport mode="Boolean" in_out_t="bool_t" />
+ <typesupport mode="signed 8" in_out_t="int8_t" />
+ <typesupport mode="signed 16" in_out_t="int16_t" />
+ <typesupport mode="signed 32" in_out_t="int32_t" />
+ <typesupport mode="fp16" in_out_t="fp16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="bf16" in_out_t="bf16_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ <typesupport mode="fp32" in_out_t="fp32_t" >
+ <profile name="MI"/>
+ <profile name="MT"/>
+ </typesupport>
+ </operator>
+ </operatorgroup>
+ <operatorgroup name="control-flow">
+ <operator>
+ <name>COND_IF</name>
+ <arguments>
+ <argument category="input" name="input_list" type="tensor_list_t" shape="-">
+ <description>List of input tensors</description>
+ </argument>
+ <argument category="input" name="condition" type="bool_t" shape="-">
+ <description>Input condition as rank-0 tensor</description>
+ </argument>
+ <argument category="attribute" name="then_graph" type="tosa_graph_t" shape="-">
+ <description>TOSA graph to execute if condition is true</description>
+ </argument>
+ <argument category="attribute" name="else_graph" type="tosa_graph_t" shape="-">
+ <description>TOSA graph to execute if condition is false</description>
+ </argument>
+ <argument category="output" name="output_list" type="tensor_list_t" shape="-">
+ <description>List of output tensors</description>
+ </argument>
+ </arguments>
+ </operator>
+ <operator>
+ <name>WHILE_LOOP</name>
+ <arguments>
+ <argument category="input" name="input_list" type="tensor_list_t" shape="-">
+ <description>List of input tensors</description>
+ </argument>
+ <argument category="attribute" name="cond_graph" type="tosa_graph_t" shape="-">
+ <description>TOSA graph to evaluate the condition</description>
+ </argument>
+ <argument category="attribute" name="body_graph" type="tosa_graph_t" shape="-">
+ <description>TOSA graph to execute the loop body</description>
+ </argument>
+ <argument category="output" name="output_list" type="tensor_list_t" shape="-">
+ <description>List of output tensors</description>
+ </argument>
+ </arguments>
+ </operator>
+ </operatorgroup>
+ </operators>
+</tosa>