diff options
-rw-r--r-- | chapters/appendix_b.adoc | 12 | ||||
-rw-r--r-- | chapters/introduction.adoc | 37 | ||||
-rw-r--r-- | chapters/operators.adoc | 4 | ||||
-rw-r--r-- | tools/dictionary.dic | 1 | ||||
-rwxr-xr-x | tools/genspec.py | 84 | ||||
-rw-r--r-- | tools/tosa.py | 49 | ||||
-rw-r--r-- | tosa.xml | 1468 | ||||
-rw-r--r-- | tosa.xsd | 76 | ||||
-rw-r--r-- | tosa_spec.adoc | 2 |
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)) @@ -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> @@ -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[] |