[Mlir-commits] [mlir] [mlir][tosa] Move profile compliance metadata to static constexpr tables (PR #232857)

Luke Hutton llvmlistbot at llvm.org
Tue Oct 20 02:42:07 PDT 2026


================
@@ -1,6402 +1,2567 @@
 // The profile-based compliance content below is auto-generated by the script
 // `tools/genspec.py` in https://github.com/arm/tosa-specification
-profileComplianceMap = {
-    {"tosa.argmax",
-     {{{Profile::pro_int}, {{{i8T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, i32T}, SpecificationVersion::V_1_0},
-        {{fp32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.argmin",
-     {{{Profile::pro_int}, {{{i8T, i32T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{fp16T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i64T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, i64T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.avg_pool2d",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i32T, i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp32T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.avg_pool2d_adaptive",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp16T, fp16T, fp32T, fp16T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.conv2d",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i32T, i8T, i8T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp16T, fp16T, fp32T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp32T, fp16T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp32T, fp32T, fp16T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp16T, fp32T, fp32T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.conv3d",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i32T, i8T, i8T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp16T, fp16T, fp32T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp32T, fp16T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp32T, fp32T, fp16T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp16T, fp32T, fp32T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.depthwise_conv2d",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i32T, i8T, i8T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp16T, fp16T, fp32T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_0}}}}},
-    {"tosa.matmul",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i8T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp16T, fp32T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.matmul_t",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i8T, i32T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp16T, fp16T, fp16T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp32T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp16T, fp32T, fp16T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.max_pool2d",
-     {{{Profile::pro_int}, {{{i8T, i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.max_pool2d_adaptive",
-     {{{Profile::pro_int}, {{{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.transpose_conv2d",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i32T, i8T, i8T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T, fp16T, fp16T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp16T, fp16T, fp16T, fp32T, fp16T},
-         SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_0},
-        {{fp16T, fp16T, fp32T, fp16T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, fp32T, fp32T, fp16T, fp32T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, fp16T, fp32T, fp32T, fp16T, fp32T, fp32T},
-         SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.clamp",
-     {{{Profile::pro_int}, {{{i8T, i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.erf",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.sigmoid",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.tanh",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.add",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.arithmetic_right_shift",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.bitwise_and",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.bitwise_or",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.bitwise_xor",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.intdiv",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.logical_and",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.logical_left_shift",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.logical_right_shift",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.logical_or",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.logical_xor",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.maximum",
-     {{{Profile::pro_int}, {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.minimum",
-     {{{Profile::pro_int}, {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.mul",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i32T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_int, Profile::pro_fp},
-       {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.pow",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.sub",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{i32T, i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.table",
-     {{{Profile::pro_int}, {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.abs",
-     {{{Profile::pro_int}, {{{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.bitwise_not",
-     {{{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.ceil",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.clz",
-     {{{Profile::pro_int}, {{{i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.cos",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.exp",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.floor",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.log",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.logical_not",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.negate",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.reciprocal",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.rsqrt",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.sin",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.select",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.equal",
-     {{{Profile::pro_int},
-       {{{i32T, i32T, boolT}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, boolT}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, boolT}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.greater",
-     {{{Profile::pro_int},
-       {{{i32T, i32T, boolT}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, boolT}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, boolT}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.greater_equal",
-     {{{Profile::pro_int},
-       {{{i32T, i32T, boolT}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, boolT}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, boolT}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.reduce_all",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.reduce_any",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf}}},
-    {"tosa.reduce_max",
-     {{{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.reduce_min",
-     {{{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.reduce_product",
-     {{{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.reduce_sum",
-     {{{Profile::pro_int}, {{{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.concat",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.pad",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.reshape",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.reverse",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.slice",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.tile",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.transpose",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_int},
-       {{{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.gather",
-     {{{Profile::pro_int},
-       {{{i8T, i32T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i32T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{i8T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i32T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, i32T, fp32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp, Profile::pro_int},
-       {{{boolT, i32T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i64T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i64T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i64T, i32T}, SpecificationVersion::V_1_1_DRAFT}},
-       anyOf}}},
-    {"tosa.row_gather",
-     {{{Profile::pro_int},
-       {{{boolT, i32T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i64T, i32T, i64T}, SpecificationVersion::V_1_1_DRAFT},
-        {{boolT, i64T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i64T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i64T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i64T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i64T, i64T, i64T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{boolT, i32T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i64T, i32T, i64T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i32T, fp16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, i32T, fp32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{boolT, i64T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i64T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i64T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i64T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i64T, i64T, i64T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i64T, fp16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, i64T, fp32T}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.row_gather_block_scaled",
-     {{{Profile::pro_int},
-       {{{i8T, i32T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp},
-       {{{i8T, i32T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i32T, i32T, fp16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp32T, i32T, i32T, fp32T}, SpecificationVersion::V_1_1_DRAFT}}},
-      {{Profile::pro_fp, Profile::pro_int},
-       {{{boolT, i32T, i32T, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i64T, i32T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i64T, i32T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i64T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i64T, i64T, i32T, i64T}, SpecificationVersion::V_1_1_DRAFT},
-        {{boolT, i64T, i32T, boolT}, SpecificationVersion::V_1_1_DRAFT}},
-       anyOf}}},
-    {"tosa.scatter",
-     {{{Profile::pro_int},
-       {{{i8T, i32T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i32T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{i8T, i32T, i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i32T, i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{fp16T, i32T, fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, i32T, fp32T, fp32T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp, Profile::pro_int},
-       {{{boolT, i32T, boolT, boolT}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, i64T, i8T, i8T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i16T, i64T, i16T, i16T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i32T, i64T, i32T, i32T}, SpecificationVersion::V_1_1_DRAFT}},
-       anyOf}}},
-    {"tosa.resize",
-     {{{Profile::pro_int},
-       {{{i8T, i32T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.cast",
-     {{{Profile::pro_int},
-       {{{boolT, i8T}, SpecificationVersion::V_1_0},
-        {{boolT, i16T}, SpecificationVersion::V_1_0},
-        {{boolT, i32T}, SpecificationVersion::V_1_0},
-        {{i8T, boolT}, SpecificationVersion::V_1_0},
-        {{i8T, i16T}, SpecificationVersion::V_1_0},
-        {{i8T, i32T}, SpecificationVersion::V_1_0},
-        {{i16T, boolT}, SpecificationVersion::V_1_0},
-        {{i16T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i32T}, SpecificationVersion::V_1_0},
-        {{i32T, boolT}, SpecificationVersion::V_1_0},
-        {{i32T, i8T}, SpecificationVersion::V_1_0},
-        {{i32T, i16T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{boolT, fp32T}, SpecificationVersion::V_1_1_DRAFT},
-        {{i8T, fp16T}, SpecificationVersion::V_1_0},
-        {{i8T, fp32T}, SpecificationVersion::V_1_0},
-        {{i16T, fp16T}, SpecificationVersion::V_1_0},
-        {{i16T, fp32T}, SpecificationVersion::V_1_0},
-        {{i32T, fp16T}, SpecificationVersion::V_1_0},
-        {{i32T, fp32T}, SpecificationVersion::V_1_0},
-        {{fp16T, i8T}, SpecificationVersion::V_1_0},
-        {{fp16T, i16T}, SpecificationVersion::V_1_0},
-        {{fp16T, i32T}, SpecificationVersion::V_1_0},
-        {{fp16T, fp32T}, SpecificationVersion::V_1_0},
-        {{fp32T, i8T}, SpecificationVersion::V_1_0},
-        {{fp32T, i16T}, SpecificationVersion::V_1_0},
-        {{fp32T, i32T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, boolT}, SpecificationVersion::V_1_1_DRAFT}}}}},
-    {"tosa.rescale",
-     {{{Profile::pro_int},
-       {{{i8T, i8T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i8T, i8T, i32T, i32T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T, i32T, i32T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T, i32T, i32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.const",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT}, SpecificationVersion::V_1_0},
-        {{i8T}, SpecificationVersion::V_1_0},
-        {{i16T}, SpecificationVersion::V_1_0},
-        {{i32T}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_fp},
-       {{{fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.identity",
-     {{{Profile::pro_int, Profile::pro_fp},
-       {{{boolT, boolT}, SpecificationVersion::V_1_0},
-        {{i8T, i8T}, SpecificationVersion::V_1_0},
-        {{i16T, i16T}, SpecificationVersion::V_1_0},
-        {{i32T, i32T}, SpecificationVersion::V_1_0}},
-       anyOf},
-      {{Profile::pro_fp},
-       {{{fp16T, fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T, fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.variable",
-     {{{Profile::pro_int}, {{{i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.variable_write",
-     {{{Profile::pro_int}, {{{i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.variable_read",
-     {{{Profile::pro_int}, {{{i8T}, SpecificationVersion::V_1_0}}},
-      {{Profile::pro_fp},
-       {{{fp16T}, SpecificationVersion::V_1_0},
-        {{fp32T}, SpecificationVersion::V_1_0}}}}},
-    {"tosa.custom", {{{Profile::pro_int, Profile::pro_fp}, {}, anyOf}}},
-    {"tosa.const_shape", {{{Profile::pro_int, Profile::pro_fp}, {}, anyOf}}},
+
+// clang-format off
+static constexpr OpComplianceInfo<Profile> kProfileComplianceTable[] = {
+    // abs
+    {"tosa.abs", {Profile::pro_int}, {i32T, i32T}, SpecificationVersion::V_1_0},
----------------
lhutton1 wrote:

Looks much more readable, thanks :) Just wondering if the operator name needs to be repeated each time, or whether a nested approach would work like before (with the difference being the table is now constexpr)?

https://github.com/llvm/llvm-project/pull/232857


More information about the Mlir-commits mailing list