aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2024-02-25 22:24:52 -0800
committerEric Kunze <eric.kunze@arm.com>2024-03-12 15:57:14 -0700
commit6dd341093507157aabbea00b90ca8902509cfd4f (patch)
tree26cb8ceb77dcf1dd3e57d990c3155246ab1efc6f
parente6ee631e7a7bdc9d334f5dd1d0c30d639e40612b (diff)
downloadspecification-6dd341093507157aabbea00b90ca8902509cfd4f.tar.gz
Modify TOSA profiles
Create composable profiles and profile extensions. Define requirements for a TOSA implementation to fully implement at least one profile. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I02cfb0171b2d227727f530cb29108b479206b25b
-rw-r--r--chapters/appendix_b.adoc12
-rw-r--r--chapters/introduction.adoc37
-rw-r--r--chapters/operators.adoc4
-rw-r--r--tools/dictionary.dic1
-rwxr-xr-xtools/genspec.py84
-rw-r--r--tools/tosa.py49
-rw-r--r--tosa.xml1468
-rw-r--r--tosa.xsd76
-rw-r--r--tosa_spec.adoc2
9 files changed, 1095 insertions, 638 deletions
diff --git a/chapters/appendix_b.adoc b/chapters/appendix_b.adoc
new file mode 100644
index 0000000..64f9f3a
--- /dev/null
+++ b/chapters/appendix_b.adoc
@@ -0,0 +1,12 @@
+//
+// This confidential and proprietary software may be used only as
+// authorised by a licensing agreement from ARM Limited
+// (C) COPYRIGHT 2024 ARM Limited
+// ALL RIGHTS RESERVED
+// The entire notice above must be reproduced on all authorised
+// copies and copies may only be made to the extent permitted
+// by a licensing agreement from ARM Limited.
+
+== Appendix B - Profile operator tables
+
+include::{generated}/profile_ops.adoc[]
diff --git a/chapters/introduction.adoc b/chapters/introduction.adoc
index 0a94ef3..c34bf7b 100644
--- a/chapters/introduction.adoc
+++ b/chapters/introduction.adoc
@@ -89,27 +89,36 @@ The following principles govern the selection of operators within TOSA.
=== Profiles
-TOSA supports three profiles that enable efficient implementation on different classes of device.
-The Base Inference profile is intended for embedded integer/fixed-point designs performing inference only.
-The Main Inference profile is intended for general inference functionality including integer and floating-point data types.
-The Main Training profile adds training operators in addition to inference operators.
-This version of the specification covers the Base Inference and Main Inference profiles.
-Main Training profile is expected in a later version of the specification.
-The following table summarizes the three profiles:
+TOSA profiles enable efficient implementation on different classes of device.
+Each profile is an independent set of operations and data type combinations.
+
+TOSA profile extensions define optional operation and data type combinations.
+
+Each operator's Supported Data Types table will define which profile or extension an operator and data type is in.
+An operator / data type combination may be part of multiple profiles or extensions.
+If so, each profile and extension will be listed in the Supported Data Types table.
+In addition, a table listing all operations for each profile can be found in Appendix B.
+
+The following are required for compliant TOSA implementations:
+
+* A TOSA implementation must implement at least one profile.
+* A TOSA implementation may choose to implement any extensions.
+* If a TOSA implementation chooses to implement an extension, it must implement the complete extension.
+* If a operator / data type combination requires multiple extensions, the combination is only required to be implemented if all extensions are implemented
+** For example, a CAST from bf16 to fp8 is only required if both extensions are implemented.
.Profiles
-|===
-|Profile|Name|Integer Inference|Floating-point Inference|Training
+include::{generated}/profiles.adoc[]
-|Base Inference|TOSA-BI|Yes|No|No
-|Main Inference|TOSA-MI|Yes|Yes|No
-|Main Training|TOSA-MT|Yes|Yes|Yes
-|===
+.Profile Extensions
+include::{generated}/profile_extensions.adoc[]
=== Levels
A TOSA level defines operator argument ranges that an implementation shall support.
This is distinct from a profile that defines the operations and data-types supported.
+One level must apply to all profiles and extensions supported by an implementation.
+
This version of the specification defines two TOSA levels:
* No level : allows the full range of arguments specified by the operations according to the operation data types.
@@ -487,6 +496,8 @@ To map indexes in an output tensor to that of an input tensor, see <<Broadcast H
The following number formats are defined in TOSA.
The number formats supported by a given operator are listed in its table of supported types.
+A TOSA implementation must support the number formats listed in the supported data types for operators contained in that profile.
+Number formats not required for any operators in a profile do not need to be implemented.
.Number formats
[cols="1,1,1,5"]
diff --git a/chapters/operators.adoc b/chapters/operators.adoc
index d05ab08..b63ca1e 100644
--- a/chapters/operators.adoc
+++ b/chapters/operators.adoc
@@ -16,14 +16,14 @@ Their behavior can be configured using attribute arguments.
Arguments may have one of the following types:
* `tensor_t<element_type>`, abbreviated `T<element_type>`, represents a tensor whose elements are of type `element_type` where `element_type` can be any of the data types supported in TOSA.
-* `tensor_list_t` represents a list of tensors. When lists are homogeneous, i.e. contain tensors of the same type, their type is further qualified as follows: `tensor_list_t<T<element_type>>`.
+* `tensor_list_t` represents a list of tensors. When lists are homogeneous, containing tensors of the same type, their type is further qualified as follows: `tensor_list_t<T<element_type>>`.
* `tosa_graph_t` represents a TOSA graph (see <<operator-graphs>>).
Arguments belong to one of three categories: Input, Output, or Attribute. The category to which an argument belongs further constrains its type:
* An Input argument must be a tensor or a list of tensors used to provide the data read by the operation.
* An Output argument must be a tensor or a list of tensors into which the data produced by the operation is written.
-* An Attribute argument is constant, i.e. its value is known at compilation time. It may have any data type supported by TOSA.
+* An Attribute argument is constant, its value is known at compilation time. It may have any data type supported by TOSA.
[[operator-graphs]]
=== Operator Graphs
diff --git a/tools/dictionary.dic b/tools/dictionary.dic
index 53377a0..e5a70a2 100644
--- a/tools/dictionary.dic
+++ b/tools/dictionary.dic
@@ -4,6 +4,7 @@ adoc
acc
ARGMAX
AsciiDoc
+BFloat
BILINEAR
bilinearly
bitwise
diff --git a/tools/genspec.py b/tools/genspec.py
index bdca32c..3865486 100755
--- a/tools/genspec.py
+++ b/tools/genspec.py
@@ -2,10 +2,25 @@
# Copyright (c) 2023-2024, ARM Limited.
# SPDX-License-Identifier: Apache-2.0
import os
+import re
+from functools import cmp_to_key
import tosa
+def compare_profiles(a, b):
+ if a.profiles[0] == b.profiles[0]:
+ return 1 if a.mode > b.mode else -1
+ if "EXT-" in a.profiles[0]:
+ if "EXT-" in b.profiles[0]:
+ return 1 if a.profiles[0] > b.profiles[0] else -1
+ else:
+ return 1
+ if "EXT-" in b.profiles[0]:
+ return -1
+ return 1 if a.profiles[0] > b.profiles[0] else -1
+
+
class TOSASpecAsciidocGenerator:
def __init__(self, spec):
self.spec = spec
@@ -73,12 +88,12 @@ class TOSASpecAsciidocGenerator:
if op.typesupports:
file.write("\n*Supported Data Types:*\n\n")
file.write("|===\n")
- header = "|Profile|Mode"
+ header = "|Profile/Extension|Mode"
for ty in op.types:
header += f"|{ty}"
file.write(header)
file.write("\n\n")
- for tysup in op.typesupports:
+ for tysup in sorted(op.typesupports, key=cmp_to_key(compare_profiles)):
profile = ", ".join(tysup.profiles) if tysup.profiles else "Any"
entry = f"|{profile}|{tysup.mode}"
for ty in op.types:
@@ -108,6 +123,28 @@ class TOSASpecAsciidocGenerator:
f.write(" draft")
f.write("\n")
+ # Generate profile table
+ with open(os.path.join(outdir, "profiles.adoc"), "w") as f:
+ f.write("|===\n")
+ f.write("|Profile|Name|Description|Specification Status\n\n")
+ for profile in self.spec.profiles:
+ f.write(
+ f"|{profile.profile}|{profile.name}|"
+ f"{profile.description}|{profile.status}\n"
+ )
+ f.write("|===\n")
+
+ # Generate profile table
+ with open(os.path.join(outdir, "profile_extensions.adoc"), "w") as f:
+ f.write("|===\n")
+ f.write("|Name|Description|Specification Status\n\n")
+ for profile_extension in self.spec.profile_extensions:
+ f.write(
+ f"|{profile_extension.name}|{profile_extension.description}"
+ f"|{profile_extension.status}\n"
+ )
+ f.write("|===\n")
+
# Generate level maximums table
with open(os.path.join(outdir, "levels.adoc"), "w") as f:
f.write("|===\n")
@@ -137,6 +174,49 @@ class TOSASpecAsciidocGenerator:
for enum in self.spec.enums:
self.generate_enum(enum, f)
+ all_operators = []
+ for group in self.spec.operatorgroups:
+ for op in group.operators:
+ all_operators.append(op)
+
+ # Generate profile operator appendix
+ with open(os.path.join(outdir, "profile_ops.adoc"), "w") as f:
+ f.write("=== Profiles\n")
+ for profile in self.spec.profiles:
+ f.write(f"==== {profile.profile}\n")
+ f.write(f"{profile.description}\n\n")
+ f.write(f"Status: {profile.status}\n")
+ f.write("|===\n")
+ f.write("|Operator|mode\n\n")
+ for op in sorted(all_operators, key=lambda o: o.name):
+ if op.typesupports:
+ for tysup in op.typesupports:
+ if profile.name in tysup.profiles:
+ f.write(f"|{op.name}|{tysup.mode}\n")
+ f.write("|===\n")
+
+ f.write("=== Profile Extensions\n")
+ for pext in self.spec.profile_extensions:
+ f.write(f"==== {pext.name} extension\n")
+ f.write(f"{pext.description}\n\n")
+ f.write(f"Status: {pext.status}\n")
+ f.write("|===\n")
+ f.write("|Operator|mode|note\n\n")
+ for op in sorted(all_operators, key=lambda o: o.name):
+ if op.typesupports:
+ for tysup in op.typesupports:
+ for profile in tysup.profiles:
+ if profile.find(pext.name) != -1:
+ note = ""
+ m = re.match(r"(.*) and (.*)", profile)
+ if m:
+ if m[1] == pext.name:
+ note = f"If {m[2]} is also supported"
+ else:
+ note = f"If {m[1]} is also supported"
+ f.write(f"|{op.name}|{tysup.mode}|{note}\n")
+ f.write("|===\n")
+
if __name__ == "__main__":
import argparse
diff --git a/tools/tosa.py b/tools/tosa.py
index 803e478..e70b297 100644
--- a/tools/tosa.py
+++ b/tools/tosa.py
@@ -31,6 +31,23 @@ class TOSAOperatorArgumentCategory:
self.profiles = profiles
+class TOSAProfile:
+ def __init__(self, profile, name, description, status):
+ self.profile = profile
+ self.name = name
+ self.description = description
+ self.status = status
+ self.ops = []
+
+
+class TOSAProfileExtension:
+ def __init__(self, name, description, status):
+ self.name = name
+ self.description = description
+ self.status = status
+ self.ops = []
+
+
class TOSAEnum:
def __init__(self, name, description, values):
self.name = name
@@ -95,6 +112,8 @@ class TOSASpec:
def __init__(self, xmlpath):
tree = ET.parse(xmlpath)
self.xmlroot = tree.getroot()
+ self.profiles = []
+ self.profile_extensions = []
self.levels = []
self.operatorgroups = []
self.enums = []
@@ -102,6 +121,12 @@ class TOSASpec:
def __load_spec(self):
self.__load_version()
+ for profile in self.xmlroot.findall("./profiles/profile"):
+ self.profiles.append(self.__load_profile(profile))
+ for profile_ext in self.xmlroot.findall(
+ "./profile_extensions/profile_extension"
+ ):
+ self.profile_extensions.append(self.__load_profile_extension(profile_ext))
for level in self.xmlroot.findall("./levels/level"):
self.levels.append(self.__load_level(level))
for group in self.xmlroot.findall("./operators/operatorgroup"):
@@ -119,6 +144,19 @@ class TOSASpec:
else:
self.version_is_draft = False
+ def __load_profile(self, xml_profile):
+ profile = xml_profile.get("profile")
+ name = xml_profile.get("name")
+ description = xml_profile.get("description")
+ status = xml_profile.get("status")
+ return TOSAProfile(profile, name, description, status)
+
+ def __load_profile_extension(self, ext):
+ name = ext.get("name")
+ description = ext.get("description")
+ status = ext.get("status")
+ return TOSAProfileExtension(name, description, status)
+
def __load_level(self, level):
name = level.get("name")
desc = level.text.strip()
@@ -155,10 +193,17 @@ class TOSASpec:
for tysup in op.findall("typesupport"):
tsmode = tysup.get("mode")
tsmap = {}
- profiles = tysup.findall("profile")
+ profiles = tysup.findall("op_profile")
tsprofiles = []
for p in profiles:
- tsprofiles.append(p.get("name"))
+ tsp_name = p.get("name")
+ and_name = p.get("and_name")
+ if and_name is not None:
+ if and_name < tsp_name:
+ tsp_name = f"{and_name} and {tsp_name}"
+ else:
+ tsp_name = f"{tsp_name} and {and_name}"
+ tsprofiles.append(tsp_name)
for ty in types:
tsmap[ty] = tysup.get(ty)
typesupports.append(TOSAOperatorDataTypeSupport(tsmode, tsmap, tsprofiles))
diff --git a/tosa.xml b/tosa.xml
index 27b49b8..17c82f9 100644
--- a/tosa.xml
+++ b/tosa.xml
@@ -3,10 +3,19 @@
<tosa>
<version major="0" minor="100" patch="0" draft="true"/>
<profiles>
- <profile name="BI">Base Inference</profile>
- <profile name="MI">Main Inference</profile>
- <profile name="MT">Main Training</profile>
+ <profile profile="Base Inference" name="BI" status="Complete" description="Integer operations, primarily 8 and 32-bit values"/>
+ <profile profile="Main Inference" name="MI" status="Complete" description="FP16 and FP32 operations"/>
+ <profile profile="Main Training" name="MT" status="In development" description="Training operations"/>
</profiles>
+ <profile_extensions>
+ <profile_extension name="EXT-INT16" description="16-bit integer operations" status="Complete"/>
+ <profile_extension name="EXT-INT4" description="4-bit integer weights" status="Complete"/>
+ <profile_extension name="EXT-BF16" description="BFloat16 operations" status="Complete"/>
+ <profile_extension name="EXT-FP8E4M3" description="8-bit floating-point operations E4M3" status="Complete"/>
+ <profile_extension name="EXT-FP8E5M2" description="8-bit floating-point operations E5M2" status="Complete"/>
+ <profile_extension name="EXT-FFT" description="Fast Fourier Transform operations" status="Complete"/>
+ <profile_extension name="EXT-VARIABLE" description="Stateful variable operations" status="Complete"/>
+ </profile_extensions>
<levels>
<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>
<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>
@@ -34,26 +43,26 @@
<type name='in_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t"/>
- <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t" />
+ <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_t="fp8e4m3_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="i32_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -104,30 +113,29 @@
<type name='in_out_t' />
<type name='acc_t' />
</types>
- <typesupport mode="signed 8 with int32 accumulate" in_out_t="i8_t" acc_t="i32_t" />
- <typesupport mode="signed 16 with int32 accumulate" in_out_t="i16_t" acc_t="i32_t" />
+ <typesupport mode="signed 8 with int32 accumulate" in_out_t="i8_t" acc_t="i32_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16 with int32 accumulate" in_out_t="i16_t" acc_t="i32_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_out_t="fp8e4m3_t" acc_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2 with fp16 accumulate" in_out_t="fp8e5m2_t" acc_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_out_t="fp16_t" acc_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp16 with fp32 accumulate" in_out_t="fp16_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16 with fp32 accumulate" in_out_t="bf16_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32 with fp32 accumulate" in_out_t="fp32_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -192,31 +200,32 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="EXT-BF16"/>
</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"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -285,31 +294,32 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="EXT-BF16"/>
</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"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -374,31 +384,32 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" >
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" weight_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2 with fp16 accumulate" in_t="fp8e5m2_t" weight_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="EXT-BF16"/>
</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"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -439,8 +450,7 @@
<type name='in_out_t' />
</types>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FFT"/>
</typesupport>
</operator>
<operator>
@@ -477,24 +487,26 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="EXT-BF16"/>
</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"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -525,30 +537,29 @@
<type name='in_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 16x16 with int48 accumulate" in_t="i16_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16x16 with int48 accumulate" in_t="i16_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp16 with fp32 accumulate" in_t="fp16_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16 with fp32 accumulate" in_t="bf16_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32 with fp32 accumulate" in_t="fp32_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -586,26 +597,26 @@
<types>
<type name='in_out_t' />
</types>
- <typesupport mode="signed 8" in_out_t="i8_t" />
- <typesupport mode="signed 16" in_out_t="i16_t" />
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -638,8 +649,7 @@
<type name='in_out_t' />
</types>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FFT"/>
</typesupport>
</operator>
<operator>
@@ -700,31 +710,32 @@
<type name='weight_t' />
<type name='out_t' />
</types>
- <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t" />
- <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t" />
- <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t" />
+ <typesupport mode="signed 8x8 with int32 accumulate" in_t="i8_t" weight_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8x4 with int32 accumulate" in_t="i8_t" weight_t="i4_t" out_t="i32_t">
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="signed 16x8 with int48 accumulate" in_t="i16_t" weight_t="i8_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3 with fp16 accumulate" in_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 with fp16 accumulate" in_t="fp16_t" weight_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="MI"/>
</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"/>
+ <op_profile name="EXT-BF16"/>
</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"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -753,19 +764,20 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -785,16 +797,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -814,16 +823,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -843,16 +849,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -877,18 +880,18 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -915,9 +918,15 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>BITWISE_AND</name>
@@ -939,9 +948,15 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>BITWISE_OR</name>
@@ -963,9 +978,15 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>BITWISE_XOR</name>
@@ -987,9 +1008,15 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>INTDIV</name>
@@ -1011,7 +1038,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>LOGICAL_AND</name>
@@ -1033,7 +1063,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>LOGICAL_LEFT_SHIFT</name>
@@ -1055,9 +1088,18 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>LOGICAL_RIGHT_SHIFT</name>
@@ -1079,9 +1121,18 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>LOGICAL_OR</name>
@@ -1103,7 +1154,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>LOGICAL_XOR</name>
@@ -1125,7 +1179,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>MAXIMUM</name>
@@ -1147,18 +1204,17 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1181,18 +1237,17 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1206,7 +1261,7 @@
<description>Input tensor with the same rank as input1</description>
<rank min="0" max="MAX_RANK"/>
</argument>
- <argument category="input(MT)|attribute(BI,MI)" name="shift" type="tensor_t" shape="-" tensor-element-type="i8_t">
+ <argument category="input" name="shift" type="tensor_t" shape="-" tensor-element-type="i8_t">
<description>Result right shift (i32_t data type only)</description>
<rank min="0" max="0"/>
</argument>
@@ -1220,20 +1275,24 @@
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t"/>
- <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t"/>
- <typesupport mode="signed 32" in_t="i32_t" out_t="i32_t"/>
+ <typesupport mode="signed 8" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_t="i16_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_t="i32_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1257,16 +1316,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1289,18 +1345,18 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1310,7 +1366,7 @@
<description>Input tensor</description>
<rank min="0" max="MAX_RANK"/>
</argument>
- <argument category="input(MT)|attribute(BI,MI)" name="table" type="tensor_t" shape="[TABLE_SIZE]" tensor-element-type="table_t">
+ <argument category="input" name="table" type="tensor_t" shape="[TABLE_SIZE]" tensor-element-type="table_t">
<description>Lookup table tensor</description>
<rank min="1" max="1"/>
</argument>
@@ -1326,8 +1382,12 @@
<type name='out_t'/>
<type name='TABLE_SIZE'/>
</types>
- <typesupport mode="signed 8" in_t="i8_t" table_t="i8_t" TABLE_SIZE="256" out_t="i8_t"/>
- <typesupport mode="signed 16" in_t="i16_t" table_t="i16_t" TABLE_SIZE="513" out_t="i32_t"/>
+ <typesupport mode="signed 8" in_t="i8_t" table_t="i8_t" TABLE_SIZE="256" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_t="i16_t" table_t="i16_t" TABLE_SIZE="513" out_t="i32_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
</operator>
</operatorgroup>
<operatorgroup name="elementwise-unary">
@@ -1347,18 +1407,17 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1377,9 +1436,15 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>CEIL</name>
@@ -1398,16 +1463,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1426,7 +1488,9 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
</operator>
<operator>
<name>COS</name>
@@ -1445,16 +1509,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1474,16 +1535,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1503,16 +1561,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1532,16 +1587,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1560,7 +1612,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="Boolean" in_out_t="bool_t"/>
+ <typesupport mode="Boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>NEGATE</name>
@@ -1587,20 +1642,23 @@
<type name='in_out_t'/>
<type name='acc_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t" acc_t="i32_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t" acc_t="i32_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t" acc_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t" acc_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" acc_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1620,16 +1678,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1649,16 +1704,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -1687,21 +1739,27 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="Boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="Boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1721,16 +1779,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -1756,18 +1811,17 @@
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
+ <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1791,18 +1845,17 @@
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
+ <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1826,18 +1879,17 @@
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t"/>
+ <typesupport mode="signed 32" in_t="i32_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_t="fp16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t" out_t="bool_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -1861,7 +1913,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>REDUCE_ANY</name>
@@ -1882,7 +1937,10 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>REDUCE_MAX</name>
@@ -1903,20 +1961,23 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1938,20 +1999,23 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -1974,16 +2038,13 @@
<type name='in_out_t'/>
</types>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2006,18 +2067,17 @@
<type name='in_out_t'/>
<type name='acc_t'/>
</types>
- <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t"/>
+ <typesupport mode="signed 32" in_out_t="i32_t" acc_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" acc_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" acc_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -2042,28 +2102,33 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2091,28 +2156,33 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2134,28 +2204,33 @@
<types>
<type name='in_t'/>
</types>
- <typesupport mode="boolean" in_t="bool_t"/>
- <typesupport mode="signed 8" in_t="i8_t"/>
- <typesupport mode="signed 16" in_t="i16_t"/>
- <typesupport mode="signed 32" in_t="i32_t"/>
+ <typesupport mode="boolean" in_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2178,28 +2253,33 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2222,28 +2302,33 @@
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2271,28 +2356,33 @@ used.</description>
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2315,28 +2405,33 @@ used.</description>
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2359,28 +2454,33 @@ used.</description>
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="boolean" in_out_t="bool_t"/>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="boolean" in_out_t="bool_t">
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -2404,27 +2504,29 @@ used.</description>
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2450,27 +2552,29 @@ used.</description>
<types>
<type name='in_out_t'/>
</types>
- <typesupport mode="signed 8" in_out_t="i8_t"/>
- <typesupport mode="signed 16" in_out_t="i16_t"/>
- <typesupport mode="signed 32" in_out_t="i32_t"/>
+ <typesupport mode="signed 8" in_out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16" in_out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32" in_out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -2510,21 +2614,26 @@ used.</description>
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="signed 8, bilinear" resize_t="i16_t" in_t="i8_t" out_t="i32_t"/>
- <typesupport mode="signed 8, nearest" resize_t="i16_t" in_t="i8_t" out_t="i8_t"/>
- <typesupport mode="signed 16, bilinear" resize_t="i16_t" in_t="i16_t" out_t="i48_t"/>
- <typesupport mode="signed 16, nearest" resize_t="i16_t" in_t="i16_t" out_t="i16_t"/>
+ <typesupport mode="signed 8, bilinear" resize_t="i16_t" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8, nearest" resize_t="i16_t" in_t="i8_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16, bilinear" resize_t="i16_t" in_t="i16_t" out_t="i48_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
+ <typesupport mode="signed 16, nearest" resize_t="i16_t" in_t="i16_t" out_t="i16_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp16" resize_t="fp16_t" in_t="fp16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" resize_t="bf16_t" in_t="bf16_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" resize_t="fp32_t" in_t="fp32_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -2546,147 +2655,143 @@ used.</description>
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="bool to signed 8" in_t="bool_t" out_t="i8_t"/>
- <typesupport mode="bool to signed 16" in_t="bool_t" out_t="i16_t"/>
- <typesupport mode="bool to signed 32" in_t="bool_t" out_t="i32_t"/>
- <typesupport mode="signed 8 to bool" in_t="i8_t" out_t="bool_t"/>
- <typesupport mode="signed 8 to signed 16" in_t="i8_t" out_t="i16_t"/>
- <typesupport mode="signed 8 to signed 32" in_t="i8_t" out_t="i32_t"/>
+ <typesupport mode="bool to signed 8" in_t="bool_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="bool to signed 16" in_t="bool_t" out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="bool to signed 32" in_t="bool_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8 to bool" in_t="i8_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8 to signed 16" in_t="i8_t" out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 8 to signed 32" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
<typesupport mode="signed 8 to fp16" in_t="i8_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="signed 8 to bf16" in_t="i8_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="signed 8 to fp32" in_t="i8_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 16 to bool" in_t="i16_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16 to signed 8" in_t="i16_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 16 to signed 32" in_t="i16_t" out_t="i32_t">
+ <op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 16 to bool" in_t="i16_t" out_t="bool_t"/>
- <typesupport mode="signed 16 to signed 8" in_t="i16_t" out_t="i8_t"/>
- <typesupport mode="signed 16 to signed 32" in_t="i16_t" out_t="i32_t"/>
<typesupport mode="signed 16 to fp16" in_t="i16_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="signed 16 to bf16" in_t="i16_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="signed 16 to fp32" in_t="i16_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
+ </typesupport>
+ <typesupport mode="signed 32 to bool" in_t="i32_t" out_t="bool_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32 to signed 8" in_t="i32_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="signed 32 to signed 16" in_t="i32_t" out_t="i16_t">
+ <op_profile name="BI"/>
</typesupport>
- <typesupport mode="signed 32 to bool" in_t="i32_t" out_t="bool_t"/>
- <typesupport mode="signed 32 to signed 8" in_t="i32_t" out_t="i8_t"/>
- <typesupport mode="signed 32 to signed 16" in_t="i32_t" out_t="i16_t"/>
<typesupport mode="signed 32 to fp16" in_t="i32_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="signed 32 to bf16" in_t="i32_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="signed 32 to fp32" in_t="i32_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16 to signed 8" in_t="bf16_t" out_t="i8_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="bf16 to signed 16" in_t="bf16_t" out_t="i16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="bf16 to signed 32" in_t="bf16_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="bf16 to fp8e4m3" in_t="bf16_t" out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16" and_name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="bf16 to fp8e5m2" in_t="bf16_t" out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-BF16" and_name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="bf16 to fp32" in_t="bf16_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp8e4m3 to fp16" in_t="fp8e4m3_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e4m3 to bf16" in_t="fp8e4m3_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3" and_name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp8e4m3 to fp32" in_t="fp8e4m3_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2 to fp16" in_t="fp8e5m2_t" out_t="fp16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp8e5m2 to bf16" in_t="fp8e5m2_t" out_t="bf16_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2" and_name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp8e5m2 to fp32" in_t="fp8e5m2_t" out_t="fp32_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 to signed 8" in_t="fp16_t" out_t="i8_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp16 to signed 16" in_t="fp16_t" out_t="i16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp16 to signed 32" in_t="fp16_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp16 to fp8e4m3" in_t="fp16_t" out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp16 to fp8e5m2" in_t="fp16_t" out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16 to fp32" in_t="fp16_t" out_t="fp32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp32 to signed 8" in_t="fp32_t" out_t="i8_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp32 to signed 16" in_t="fp32_t" out_t="i16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp32 to signed 32" in_t="fp32_t" out_t="i32_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="fp32 to fp8e4m3" in_t="fp32_t" out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp32 to fp8e5m2" in_t="fp32_t" out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp32 to bf16" in_t="fp32_t" out_t="bf16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32 to fp16" in_t="fp32_t" out_t="fp16_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2709,11 +2814,11 @@ used.</description>
<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>
<rank min="0" max="0"/>
</argument>
- <argument category="input(MT)|attribute(BI,MI)" name="multiplier" type="tensor_t" shape="[NC]" tensor-element-type="mul_t">
+ <argument category="input" name="multiplier" type="tensor_t" shape="[NC]" tensor-element-type="mul_t">
<description>Scaling multiplier array</description>
<rank min="1" max="1"/>
</argument>
- <argument category="input(MT)|attribute(BI,MI)" name="shift" type="tensor_t" shape="[NC]" tensor-element-type="i8_t">
+ <argument category="input" name="shift" type="tensor_t" shape="[NC]" tensor-element-type="i8_t">
<description>Scaling shift array</description>
<rank min="1" max="1"/>
</argument>
@@ -2742,18 +2847,42 @@ used.</description>
<type name='in_t'/>
<type name='out_t'/>
</types>
- <typesupport mode="8-bit to 8-bit" in_t="i8_t" out_t="i8_t"/>
- <typesupport mode="8-bit to 16-bit" in_t="i8_t" out_t="i16_t"/>
- <typesupport mode="8-bit to 32-bit" in_t="i8_t" out_t="i32_t"/>
- <typesupport mode="16-bit to 8-bit" in_t="i16_t" out_t="i8_t"/>
- <typesupport mode="16-bit to 16-bit" in_t="i16_t" out_t="i16_t"/>
- <typesupport mode="16-bit to 32-bit" in_t="i16_t" out_t="i32_t"/>
- <typesupport mode="32-bit to 8-bit" in_t="i32_t" out_t="i8_t"/>
- <typesupport mode="32-bit to 16-bit" in_t="i32_t" out_t="i16_t"/>
- <typesupport mode="32-bit to 32-bit" in_t="i32_t" out_t="i32_t"/>
- <typesupport mode="48-bit to 8-bit" in_t="i48_t" out_t="i8_t"/>
- <typesupport mode="48-bit to 16-bit" in_t="i48_t" out_t="i16_t"/>
- <typesupport mode="48-bit to 32-bit" in_t="i48_t" out_t="i32_t"/>
+ <typesupport mode="8-bit to 8-bit" in_t="i8_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="8-bit to 16-bit" in_t="i8_t" out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="8-bit to 32-bit" in_t="i8_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="16-bit to 8-bit" in_t="i16_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="16-bit to 16-bit" in_t="i16_t" out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="16-bit to 32-bit" in_t="i16_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="32-bit to 8-bit" in_t="i32_t" out_t="i8_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="32-bit to 16-bit" in_t="i32_t" out_t="i16_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="32-bit to 32-bit" in_t="i32_t" out_t="i32_t">
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="48-bit to 8-bit" in_t="i48_t" out_t="i8_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
+ <typesupport mode="48-bit to 16-bit" in_t="i48_t" out_t="i16_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
+ <typesupport mode="48-bit to 32-bit" in_t="i48_t" out_t="i32_t">
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
</operator>
</operatorgroup>
<operatorgroup name="data-node">
@@ -2772,30 +2901,38 @@ used.</description>
<types>
<type name='out_t' />
</types>
- <typesupport mode="Boolean" out_t="bool_t" />
- <typesupport mode="4-bit" out_t="i4_t" />
- <typesupport mode="8-bit" out_t="i8_t" />
- <typesupport mode="16-bit" out_t="i16_t" />
- <typesupport mode="32-bit" out_t="i32_t" />
- <typesupport mode="48-bit" out_t="i48_t" />
+ <typesupport mode="Boolean" out_t="bool_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="4-bit" out_t="i4_t" >
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="8-bit" out_t="i8_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="16-bit" out_t="i16_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="32-bit" out_t="i32_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="48-bit" out_t="i48_t" >
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3" out_t="fp8e4m3_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" out_t="fp8e5m2_t" >
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
<operator>
@@ -2813,30 +2950,38 @@ used.</description>
<types>
<type name='in_out_t' />
</types>
- <typesupport mode="Boolean" in_out_t="bool_t" />
- <typesupport mode="4-bit" in_out_t="i4_t" />
- <typesupport mode="8-bit" in_out_t="i8_t" />
- <typesupport mode="16-bit" in_out_t="i16_t" />
- <typesupport mode="32-bit" in_out_t="i32_t" />
- <typesupport mode="48-bit" in_out_t="i48_t" />
+ <typesupport mode="Boolean" in_out_t="bool_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="4-bit" in_out_t="i4_t" >
+ <op_profile name="EXT-INT4"/>
+ </typesupport>
+ <typesupport mode="8-bit" in_out_t="i8_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="16-bit" in_out_t="i16_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="32-bit" in_out_t="i32_t" >
+ <op_profile name="BI"/>
+ </typesupport>
+ <typesupport mode="48-bit" in_out_t="i48_t" >
+ <op_profile name="EXT-INT16"/>
+ </typesupport>
<typesupport mode="fp8e4m3" in_out_t="fp8e4m3_t">
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E4M3"/>
</typesupport>
<typesupport mode="fp8e5m2" in_out_t="fp8e5m2_t">
- <profile name="MT"/>
+ <op_profile name="EXT-FP8E5M2"/>
</typesupport>
<typesupport mode="fp16" in_out_t="fp16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
<typesupport mode="bf16" in_out_t="bf16_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="EXT-BF16"/>
</typesupport>
<typesupport mode="fp32" in_out_t="fp32_t" >
- <profile name="MI"/>
- <profile name="MT"/>
+ <op_profile name="MI"/>
</typesupport>
</operator>
</operatorgroup>
@@ -2862,6 +3007,13 @@ used.</description>
<description>List of output tensors</description>
</argument>
</arguments>
+ <types>
+ <type name='tensor_list_t' />
+ </types>
+ <typesupport mode="All" tensor_list_t="-" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
</operatorgroup>
<operatorgroup name="control-flow">
@@ -2885,6 +3037,13 @@ used.</description>
<description>List of output tensors</description>
</argument>
</arguments>
+ <types>
+ <type name='cond_t' />
+ </types>
+ <typesupport mode="Boolean" cond_t="bool_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
<operator>
<name>WHILE_LOOP</name>
@@ -2902,6 +3061,13 @@ used.</description>
<description>List of output tensors</description>
</argument>
</arguments>
+ <types>
+ <type name='cond_t' />
+ </types>
+ <typesupport mode="Boolean" cond_t="bool_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ </typesupport>
</operator>
</operatorgroup>
<operatorgroup name="variable">
@@ -2926,6 +3092,18 @@ used.</description>
<rank min="0" max="MAX_RANK"/>
</argument>
</arguments>
+ <types>
+ <type name='var_t' />
+ </types>
+ <typesupport mode="signed 8" var_t="i8_t" >
+ <op_profile name="BI" and_name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp16" var_t="fp16_t" >
+ <op_profile name="MI" and_name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp32" var_t="fp32_t" >
+ <op_profile name="MI" and_name="EXT-VARIABLE"/>
+ </typesupport>
</operator>
<operator>
<name>VARIABLE_WRITE</name>
@@ -2940,6 +3118,21 @@ used.</description>
<rank min="0" max="MAX_RANK"/>
</argument>
</arguments>
+ <types>
+ <type name='var_t' />
+ </types>
+ <typesupport mode="signed 8" var_t="i8_t" >
+ <op_profile name="BI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp16" var_t="fp16_t" >
+ <op_profile name="MI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp32" var_t="fp32_t" >
+ <op_profile name="MI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
</operator>
<operator>
<name>VARIABLE_READ</name>
@@ -2954,6 +3147,21 @@ used.</description>
<rank min="0" max="MAX_RANK"/>
</argument>
</arguments>
+ <types>
+ <type name='var_t' />
+ </types>
+ <typesupport mode="signed 8" var_t="i8_t" >
+ <op_profile name="BI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp16" var_t="fp16_t" >
+ <op_profile name="MI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
+ <typesupport mode="fp32" var_t="fp32_t" >
+ <op_profile name="MI"/>
+ <op_profile name="EXT-VARIABLE"/>
+ </typesupport>
</operator>
</operatorgroup>
<operatorgroup name="shape">
@@ -2970,6 +3178,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
<operator>
<name>CONCAT_SHAPE</name>
@@ -2981,6 +3197,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
<operator>
<name>CONST_SHAPE</name>
@@ -2992,6 +3216,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
<operator>
<name>DIV_SHAPE</name>
@@ -3006,6 +3238,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
<operator>
<name>MUL_SHAPE</name>
@@ -3020,6 +3260,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
<operator>
<name>SUB_SHAPE</name>
@@ -3034,6 +3282,14 @@ used.</description>
<description>Output shape</description>
</argument>
</arguments>
+ <types>
+ <type name='shape_t' />
+ </types>
+ <typesupport mode="shape" shape_t="size_t" >
+ <op_profile name="BI"/>
+ <op_profile name="MI"/>
+ <op_profile name="MT"/>
+ </typesupport>
</operator>
</operatorgroup>
</operators>
diff --git a/tosa.xsd b/tosa.xsd
index e0afbe2..b39a2f4 100644
--- a/tosa.xsd
+++ b/tosa.xsd
@@ -3,11 +3,18 @@
<!-- Type definitions -->
-<xs:simpleType name="profile">
+<xs:simpleType name="profile_ext_name">
<xs:restriction base="xs:string">
<xs:enumeration value="BI"/>
<xs:enumeration value="MI"/>
<xs:enumeration value="MT"/>
+ <xs:enumeration value="EXT-INT16"/>
+ <xs:enumeration value="EXT-INT4"/>
+ <xs:enumeration value="EXT-BF16"/>
+ <xs:enumeration value="EXT-FP8E4M3"/>
+ <xs:enumeration value="EXT-FP8E5M2"/>
+ <xs:enumeration value="EXT-FFT"/>
+ <xs:enumeration value="EXT-VARIABLE"/>
</xs:restriction>
</xs:simpleType>
@@ -66,6 +73,9 @@
<xs:enumeration value="mul_t"/>
<xs:enumeration value="TABLE_SIZE"/>
<xs:enumeration value="var_t"/>
+ <xs:enumeration value="cond_t"/>
+ <xs:enumeration value="shape_t"/>
+ <xs:enumeration value="tensor_list_t"/>
</xs:restriction>
</xs:simpleType>
@@ -104,16 +114,6 @@
</xs:complexType>
</xs:element>
-<xs:element name="profile">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="name" type="profile" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-</xs:element>
-
<xs:element name="level">
<xs:complexType>
<xs:simpleContent>
@@ -137,6 +137,23 @@
</xs:complexType>
</xs:element>
+<xs:element name="profile">
+ <xs:complexType>
+ <xs:attribute name="profile" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="status" type="xs:string" use="required"/>
+ <xs:attribute name="description" type="xs:string" use="required"/>
+ </xs:complexType>
+</xs:element>
+
+<xs:element name="profile_extension">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="status" type="xs:string" use="required"/>
+ <xs:attribute name="description" type="xs:string" use="required"/>
+ </xs:complexType>
+</xs:element>
+
<xs:element name="profiles">
<xs:complexType>
<xs:sequence>
@@ -145,6 +162,34 @@
</xs:complexType>
</xs:element>
+<xs:element name="profile_extensions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="profile_extension" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+<xs:element name="profile_ext_name">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="profile_ext_name" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+<!-- Profile or extension that an op and data type implements -->
+<xs:element name="op_profile">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="name" type="profile_ext_name" use="required"/>
+ <xs:attribute name="and_name" type="profile_ext_name"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+</xs:element>
+
<xs:element name="levels">
<xs:complexType>
<xs:sequence>
@@ -238,8 +283,8 @@
<xs:element name="typesupport">
<xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="profile"/>
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
+ <xs:element ref="op_profile"/>
</xs:choice>
<xs:attribute name="mode" type="xs:string" use="required"/>
<xs:attribute name="in_t" type="datatype"/>
@@ -249,7 +294,11 @@
<xs:attribute name="acc_t" type="datatype"/>
<xs:attribute name="resize_t" type="datatype"/>
<xs:attribute name="table_t" type="datatype"/>
+ <xs:attribute name="cond_t" type="datatype"/>
<xs:attribute name="TABLE_SIZE" type="xs:int"/>
+ <xs:attribute name="var_t" type="datatype"/>
+ <xs:attribute name="shape_t" type="datatype"/>
+ <xs:attribute name="tensor_list_t" type="datatype"/>
</xs:complexType>
</xs:element>
@@ -286,6 +335,7 @@
<xs:sequence>
<xs:element ref="version" minOccurs="1" maxOccurs="1"/>
<xs:element ref="profiles"/>
+ <xs:element ref="profile_extensions"/>
<xs:element ref="levels"/>
<xs:element ref="operators"/>
<xs:element ref="enum" maxOccurs="unbounded"/>
diff --git a/tosa_spec.adoc b/tosa_spec.adoc
index fb6b43e..7a07fbd 100644
--- a/tosa_spec.adoc
+++ b/tosa_spec.adoc
@@ -27,3 +27,5 @@ include::chapters/enumerations.adoc[]
include::chapters/pseudocode.adoc[]
include::chapters/appendix_a.adoc[]
+
+include::chapters/appendix_b.adoc[]