[spirv] Add support for subgroupMatrixStore
Map to OpCooperativeMatrixStoreKHR, converting arguments to SPIR-V
enum constants as necessary.
Enable the Vulkan Memory Model in the Tint executable if the
subgroup_matrix extension is present.
Bug: 348702031
Change-Id: I6b656b8440b51fce756ec0f971690eea48917ec2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/225115
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/tint/main.cc b/src/tint/cmd/tint/main.cc
index 7e8101c..7946de5 100644
--- a/src/tint/cmd/tint/main.cc
+++ b/src/tint/cmd/tint/main.cc
@@ -790,6 +790,13 @@
gen_options.bindings = tint::spirv::writer::GenerateBindings(ir.Get());
+ // Enable the Vulkan Memory Model if needed.
+ for (auto* enable : src_program.AST().Enables()) {
+ if (enable->HasExtension(tint::wgsl::Extension::kChromiumExperimentalSubgroupMatrix)) {
+ gen_options.use_vulkan_memory_model = true;
+ }
+ }
+
// Check that the module and options are supported by the backend.
auto check = tint::spirv::writer::CanGenerate(ir.Get(), gen_options);
if (check != tint::Success) {
diff --git a/src/tint/lang/spirv/builtin_fn.cc b/src/tint/lang/spirv/builtin_fn.cc
index b556140..677625e 100644
--- a/src/tint/lang/spirv/builtin_fn.cc
+++ b/src/tint/lang/spirv/builtin_fn.cc
@@ -150,6 +150,8 @@
return "sdot";
case BuiltinFn::kUdot:
return "udot";
+ case BuiltinFn::kCooperativeMatrixStore:
+ return "cooperative_matrix_store";
}
return "<unknown>";
}
@@ -171,6 +173,7 @@
case BuiltinFn::kImageWrite:
case BuiltinFn::kModf:
case BuiltinFn::kFrexp:
+ case BuiltinFn::kCooperativeMatrixStore:
return core::ir::Instruction::Accesses{core::ir::Instruction::Access::kStore};
case BuiltinFn::kAtomicAnd:
diff --git a/src/tint/lang/spirv/builtin_fn.cc.tmpl b/src/tint/lang/spirv/builtin_fn.cc.tmpl
index 020f64d..e90dce2 100644
--- a/src/tint/lang/spirv/builtin_fn.cc.tmpl
+++ b/src/tint/lang/spirv/builtin_fn.cc.tmpl
@@ -45,6 +45,7 @@
case BuiltinFn::kImageWrite:
case BuiltinFn::kModf:
case BuiltinFn::kFrexp:
+ case BuiltinFn::kCooperativeMatrixStore:
return core::ir::Instruction::Accesses{core::ir::Instruction::Access::kStore};
case BuiltinFn::kAtomicAnd:
diff --git a/src/tint/lang/spirv/builtin_fn.h b/src/tint/lang/spirv/builtin_fn.h
index 2288e07..bcecb07 100644
--- a/src/tint/lang/spirv/builtin_fn.h
+++ b/src/tint/lang/spirv/builtin_fn.h
@@ -102,6 +102,7 @@
kFrexp,
kSdot,
kUdot,
+ kCooperativeMatrixStore,
kNone,
};
diff --git a/src/tint/lang/spirv/intrinsic/data.cc b/src/tint/lang/spirv/intrinsic/data.cc
index 6c5c0cd..1f8d2aa 100644
--- a/src/tint/lang/spirv/intrinsic/data.cc
+++ b/src/tint/lang/spirv/intrinsic/data.cc
@@ -891,6 +891,44 @@
};
+/// TypeMatcher for 'type subgroup_matrix'
+constexpr TypeMatcher kSubgroupMatrixMatcher {
+/* match */ [](MatchState& state, const Type* ty) -> const Type* {
+ Number S = Number::invalid;
+ const Type* T = nullptr;
+ Number C = Number::invalid;
+ Number R = Number::invalid;
+ if (!MatchSubgroupMatrix(state, ty, S, T, C, R)) {
+ return nullptr;
+ }
+ S = state.Num(S);
+ if (!S.IsValid()) {
+ return nullptr;
+ }
+ T = state.Type(T);
+ if (T == nullptr) {
+ return nullptr;
+ }
+ C = state.Num(C);
+ if (!C.IsValid()) {
+ return nullptr;
+ }
+ R = state.Num(R);
+ if (!R.IsValid()) {
+ return nullptr;
+ }
+ return BuildSubgroupMatrix(state, ty, S, T, C, R);
+ },
+/* print */ []([[maybe_unused]] MatchState* state, StyledText& out) {StyledText S;
+ state->PrintNum(S);StyledText T;
+ state->PrintType(T);StyledText C;
+ state->PrintNum(C);StyledText R;
+ state->PrintNum(R);
+ out << style::Type("subgroup_matrix", "<", S, ", ", T, ", ", C, ", ", R, ">");
+ }
+};
+
+
/// TypeMatcher for 'match f32_f16'
constexpr TypeMatcher kF32F16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
@@ -945,6 +983,29 @@
kF32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(" or "); kU32Matcher.print(nullptr, out);}
};
+/// TypeMatcher for 'match fiu32_f16'
+constexpr TypeMatcher kFiu32F16Matcher {
+/* match */ [](MatchState& state, const Type* ty) -> const Type* {
+ if (MatchF32(state, ty)) {
+ return BuildF32(state, ty);
+ }
+ if (MatchI32(state, ty)) {
+ return BuildI32(state, ty);
+ }
+ if (MatchU32(state, ty)) {
+ return BuildU32(state, ty);
+ }
+ if (MatchF16(state, ty)) {
+ return BuildF16(state, ty);
+ }
+ return nullptr;
+ },
+/* print */ [](MatchState*, StyledText& out) {
+ // Note: We pass nullptr to the Matcher.print() functions, as matchers do not support
+ // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
+ kF32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(" or "); kF16Matcher.print(nullptr, out);}
+};
+
/// TypeMatcher for 'match scalar'
constexpr TypeMatcher kScalarMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
@@ -1140,6 +1201,45 @@
}
};
+/// EnumMatcher for 'match subgroup_matrix_kind_left'
+constexpr NumberMatcher kSubgroupMatrixKindLeftMatcher {
+/* match */ [](MatchState&, Number number) -> Number {
+ if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::SubgroupMatrixKind::kLeft)) {
+ return Number(static_cast<uint32_t>(core::SubgroupMatrixKind::kLeft));
+ }
+ return Number::invalid;
+ },
+/* print */ [](MatchState*, StyledText& out) {
+ out<< style::Enum("left");
+ }
+};
+
+/// EnumMatcher for 'match subgroup_matrix_kind_right'
+constexpr NumberMatcher kSubgroupMatrixKindRightMatcher {
+/* match */ [](MatchState&, Number number) -> Number {
+ if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::SubgroupMatrixKind::kRight)) {
+ return Number(static_cast<uint32_t>(core::SubgroupMatrixKind::kRight));
+ }
+ return Number::invalid;
+ },
+/* print */ [](MatchState*, StyledText& out) {
+ out<< style::Enum("right");
+ }
+};
+
+/// EnumMatcher for 'match subgroup_matrix_kind_result'
+constexpr NumberMatcher kSubgroupMatrixKindResultMatcher {
+/* match */ [](MatchState&, Number number) -> Number {
+ if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::SubgroupMatrixKind::kResult)) {
+ return Number(static_cast<uint32_t>(core::SubgroupMatrixKind::kResult));
+ }
+ return Number::invalid;
+ },
+/* print */ [](MatchState*, StyledText& out) {
+ out<< style::Enum("result");
+ }
+};
+
/// Type and number matchers
/// The template types, types, and type matchers
@@ -1191,11 +1291,13 @@
/* [44] */ kInputAttachmentMatcher,
/* [45] */ kStructWithRuntimeArrayMatcher,
/* [46] */ kSampledImageMatcher,
- /* [47] */ kF32F16Matcher,
- /* [48] */ kIu32Matcher,
- /* [49] */ kFiu32Matcher,
- /* [50] */ kScalarMatcher,
- /* [51] */ kSamplersMatcher,
+ /* [47] */ kSubgroupMatrixMatcher,
+ /* [48] */ kF32F16Matcher,
+ /* [49] */ kIu32Matcher,
+ /* [50] */ kFiu32Matcher,
+ /* [51] */ kFiu32F16Matcher,
+ /* [52] */ kScalarMatcher,
+ /* [53] */ kSamplersMatcher,
};
/// The template numbers, and number matchers
@@ -1214,6 +1316,9 @@
/* [11] */ kU32TexelFormatMatcher,
/* [12] */ kReadableMatcher,
/* [13] */ kWritableMatcher,
+ /* [14] */ kSubgroupMatrixKindLeftMatcher,
+ /* [15] */ kSubgroupMatrixKindRightMatcher,
+ /* [16] */ kSubgroupMatrixKindResultMatcher,
};
constexpr MatcherIndex kMatcherIndices[] = {
@@ -1235,188 +1340,197 @@
/* [15] */ MatcherIndex(24),
/* [16] */ MatcherIndex(0),
/* [17] */ MatcherIndex(5),
- /* [18] */ MatcherIndex(43),
- /* [19] */ MatcherIndex(6),
- /* [20] */ MatcherIndex(45),
- /* [21] */ MatcherIndex(1),
- /* [22] */ MatcherIndex(23),
- /* [23] */ MatcherIndex(2),
- /* [24] */ MatcherIndex(3),
- /* [25] */ MatcherIndex(0),
- /* [26] */ MatcherIndex(23),
- /* [27] */ MatcherIndex(1),
- /* [28] */ MatcherIndex(3),
- /* [29] */ MatcherIndex(0),
- /* [30] */ MatcherIndex(23),
- /* [31] */ MatcherIndex(2),
+ /* [18] */ MatcherIndex(47),
+ /* [19] */ MatcherIndex(0),
+ /* [20] */ MatcherIndex(1),
+ /* [21] */ MatcherIndex(2),
+ /* [22] */ MatcherIndex(3),
+ /* [23] */ MatcherIndex(43),
+ /* [24] */ MatcherIndex(6),
+ /* [25] */ MatcherIndex(45),
+ /* [26] */ MatcherIndex(1),
+ /* [27] */ MatcherIndex(23),
+ /* [28] */ MatcherIndex(2),
+ /* [29] */ MatcherIndex(3),
+ /* [30] */ MatcherIndex(0),
+ /* [31] */ MatcherIndex(23),
/* [32] */ MatcherIndex(1),
- /* [33] */ MatcherIndex(0),
- /* [34] */ MatcherIndex(23),
- /* [35] */ MatcherIndex(1),
+ /* [33] */ MatcherIndex(3),
+ /* [34] */ MatcherIndex(0),
+ /* [35] */ MatcherIndex(23),
/* [36] */ MatcherIndex(2),
- /* [37] */ MatcherIndex(0),
- /* [38] */ MatcherIndex(43),
- /* [39] */ MatcherIndex(1),
- /* [40] */ MatcherIndex(0),
- /* [41] */ MatcherIndex(13),
- /* [42] */ MatcherIndex(43),
- /* [43] */ MatcherIndex(2),
+ /* [37] */ MatcherIndex(1),
+ /* [38] */ MatcherIndex(0),
+ /* [39] */ MatcherIndex(23),
+ /* [40] */ MatcherIndex(1),
+ /* [41] */ MatcherIndex(2),
+ /* [42] */ MatcherIndex(0),
+ /* [43] */ MatcherIndex(43),
/* [44] */ MatcherIndex(1),
- /* [45] */ MatcherIndex(13),
- /* [46] */ MatcherIndex(22),
- /* [47] */ MatcherIndex(0),
- /* [48] */ MatcherIndex(1),
- /* [49] */ MatcherIndex(46),
- /* [50] */ MatcherIndex(27),
- /* [51] */ MatcherIndex(0),
- /* [52] */ MatcherIndex(46),
- /* [53] */ MatcherIndex(28),
- /* [54] */ MatcherIndex(0),
- /* [55] */ MatcherIndex(46),
- /* [56] */ MatcherIndex(29),
- /* [57] */ MatcherIndex(0),
+ /* [45] */ MatcherIndex(0),
+ /* [46] */ MatcherIndex(13),
+ /* [47] */ MatcherIndex(43),
+ /* [48] */ MatcherIndex(2),
+ /* [49] */ MatcherIndex(1),
+ /* [50] */ MatcherIndex(13),
+ /* [51] */ MatcherIndex(43),
+ /* [52] */ MatcherIndex(7),
+ /* [53] */ MatcherIndex(1),
+ /* [54] */ MatcherIndex(13),
+ /* [55] */ MatcherIndex(22),
+ /* [56] */ MatcherIndex(0),
+ /* [57] */ MatcherIndex(1),
/* [58] */ MatcherIndex(46),
- /* [59] */ MatcherIndex(30),
+ /* [59] */ MatcherIndex(27),
/* [60] */ MatcherIndex(0),
/* [61] */ MatcherIndex(46),
- /* [62] */ MatcherIndex(31),
+ /* [62] */ MatcherIndex(28),
/* [63] */ MatcherIndex(0),
/* [64] */ MatcherIndex(46),
- /* [65] */ MatcherIndex(32),
+ /* [65] */ MatcherIndex(29),
/* [66] */ MatcherIndex(0),
- /* [67] */ MatcherIndex(39),
- /* [68] */ MatcherIndex(0),
- /* [69] */ MatcherIndex(1),
- /* [70] */ MatcherIndex(40),
- /* [71] */ MatcherIndex(0),
- /* [72] */ MatcherIndex(1),
- /* [73] */ MatcherIndex(41),
- /* [74] */ MatcherIndex(0),
- /* [75] */ MatcherIndex(1),
- /* [76] */ MatcherIndex(42),
+ /* [67] */ MatcherIndex(46),
+ /* [68] */ MatcherIndex(30),
+ /* [69] */ MatcherIndex(0),
+ /* [70] */ MatcherIndex(46),
+ /* [71] */ MatcherIndex(31),
+ /* [72] */ MatcherIndex(0),
+ /* [73] */ MatcherIndex(46),
+ /* [74] */ MatcherIndex(32),
+ /* [75] */ MatcherIndex(0),
+ /* [76] */ MatcherIndex(39),
/* [77] */ MatcherIndex(0),
/* [78] */ MatcherIndex(1),
- /* [79] */ MatcherIndex(39),
- /* [80] */ MatcherIndex(9),
- /* [81] */ MatcherIndex(13),
- /* [82] */ MatcherIndex(39),
- /* [83] */ MatcherIndex(10),
- /* [84] */ MatcherIndex(13),
- /* [85] */ MatcherIndex(39),
- /* [86] */ MatcherIndex(11),
- /* [87] */ MatcherIndex(13),
- /* [88] */ MatcherIndex(40),
+ /* [79] */ MatcherIndex(40),
+ /* [80] */ MatcherIndex(0),
+ /* [81] */ MatcherIndex(1),
+ /* [82] */ MatcherIndex(41),
+ /* [83] */ MatcherIndex(0),
+ /* [84] */ MatcherIndex(1),
+ /* [85] */ MatcherIndex(42),
+ /* [86] */ MatcherIndex(0),
+ /* [87] */ MatcherIndex(1),
+ /* [88] */ MatcherIndex(39),
/* [89] */ MatcherIndex(9),
/* [90] */ MatcherIndex(13),
- /* [91] */ MatcherIndex(40),
+ /* [91] */ MatcherIndex(39),
/* [92] */ MatcherIndex(10),
/* [93] */ MatcherIndex(13),
- /* [94] */ MatcherIndex(40),
+ /* [94] */ MatcherIndex(39),
/* [95] */ MatcherIndex(11),
/* [96] */ MatcherIndex(13),
- /* [97] */ MatcherIndex(41),
+ /* [97] */ MatcherIndex(40),
/* [98] */ MatcherIndex(9),
/* [99] */ MatcherIndex(13),
- /* [100] */ MatcherIndex(41),
+ /* [100] */ MatcherIndex(40),
/* [101] */ MatcherIndex(10),
/* [102] */ MatcherIndex(13),
- /* [103] */ MatcherIndex(41),
+ /* [103] */ MatcherIndex(40),
/* [104] */ MatcherIndex(11),
/* [105] */ MatcherIndex(13),
- /* [106] */ MatcherIndex(42),
+ /* [106] */ MatcherIndex(41),
/* [107] */ MatcherIndex(9),
/* [108] */ MatcherIndex(13),
- /* [109] */ MatcherIndex(42),
+ /* [109] */ MatcherIndex(41),
/* [110] */ MatcherIndex(10),
/* [111] */ MatcherIndex(13),
- /* [112] */ MatcherIndex(42),
+ /* [112] */ MatcherIndex(41),
/* [113] */ MatcherIndex(11),
/* [114] */ MatcherIndex(13),
- /* [115] */ MatcherIndex(22),
- /* [116] */ MatcherIndex(2),
- /* [117] */ MatcherIndex(0),
- /* [118] */ MatcherIndex(22),
- /* [119] */ MatcherIndex(0),
- /* [120] */ MatcherIndex(5),
- /* [121] */ MatcherIndex(22),
- /* [122] */ MatcherIndex(3),
- /* [123] */ MatcherIndex(0),
+ /* [115] */ MatcherIndex(42),
+ /* [116] */ MatcherIndex(9),
+ /* [117] */ MatcherIndex(13),
+ /* [118] */ MatcherIndex(42),
+ /* [119] */ MatcherIndex(10),
+ /* [120] */ MatcherIndex(13),
+ /* [121] */ MatcherIndex(42),
+ /* [122] */ MatcherIndex(11),
+ /* [123] */ MatcherIndex(13),
/* [124] */ MatcherIndex(22),
- /* [125] */ MatcherIndex(3),
- /* [126] */ MatcherIndex(1),
+ /* [125] */ MatcherIndex(2),
+ /* [126] */ MatcherIndex(0),
/* [127] */ MatcherIndex(22),
- /* [128] */ MatcherIndex(3),
- /* [129] */ MatcherIndex(2),
+ /* [128] */ MatcherIndex(0),
+ /* [129] */ MatcherIndex(5),
/* [130] */ MatcherIndex(22),
- /* [131] */ MatcherIndex(4),
+ /* [131] */ MatcherIndex(3),
/* [132] */ MatcherIndex(0),
/* [133] */ MatcherIndex(22),
- /* [134] */ MatcherIndex(4),
+ /* [134] */ MatcherIndex(3),
/* [135] */ MatcherIndex(1),
/* [136] */ MatcherIndex(22),
- /* [137] */ MatcherIndex(4),
+ /* [137] */ MatcherIndex(3),
/* [138] */ MatcherIndex(2),
/* [139] */ MatcherIndex(22),
/* [140] */ MatcherIndex(4),
- /* [141] */ MatcherIndex(3),
+ /* [141] */ MatcherIndex(0),
/* [142] */ MatcherIndex(22),
- /* [143] */ MatcherIndex(0),
- /* [144] */ MatcherIndex(2),
- /* [145] */ MatcherIndex(12),
- /* [146] */ MatcherIndex(6),
- /* [147] */ MatcherIndex(46),
- /* [148] */ MatcherIndex(34),
- /* [149] */ MatcherIndex(10),
- /* [150] */ MatcherIndex(6),
- /* [151] */ MatcherIndex(10),
- /* [152] */ MatcherIndex(2),
- /* [153] */ MatcherIndex(46),
- /* [154] */ MatcherIndex(35),
- /* [155] */ MatcherIndex(11),
- /* [156] */ MatcherIndex(6),
- /* [157] */ MatcherIndex(46),
- /* [158] */ MatcherIndex(36),
- /* [159] */ MatcherIndex(46),
- /* [160] */ MatcherIndex(37),
- /* [161] */ MatcherIndex(12),
- /* [162] */ MatcherIndex(0),
- /* [163] */ MatcherIndex(10),
- /* [164] */ MatcherIndex(1),
- /* [165] */ MatcherIndex(11),
- /* [166] */ MatcherIndex(1),
- /* [167] */ MatcherIndex(33),
- /* [168] */ MatcherIndex(0),
- /* [169] */ MatcherIndex(10),
- /* [170] */ MatcherIndex(8),
- /* [171] */ MatcherIndex(10),
- /* [172] */ MatcherIndex(3),
- /* [173] */ MatcherIndex(10),
- /* [174] */ MatcherIndex(9),
- /* [175] */ MatcherIndex(11),
- /* [176] */ MatcherIndex(9),
- /* [177] */ MatcherIndex(12),
- /* [178] */ MatcherIndex(8),
- /* [179] */ MatcherIndex(12),
- /* [180] */ MatcherIndex(9),
- /* [181] */ MatcherIndex(11),
- /* [182] */ MatcherIndex(2),
- /* [183] */ MatcherIndex(44),
- /* [184] */ MatcherIndex(0),
- /* [185] */ MatcherIndex(10),
- /* [186] */ MatcherIndex(0),
- /* [187] */ MatcherIndex(11),
- /* [188] */ MatcherIndex(0),
- /* [189] */ MatcherIndex(17),
- /* [190] */ MatcherIndex(0),
- /* [191] */ MatcherIndex(21),
- /* [192] */ MatcherIndex(0),
- /* [193] */ MatcherIndex(48),
- /* [194] */ MatcherIndex(7),
- /* [195] */ MatcherIndex(47),
- /* [196] */ MatcherIndex(49),
- /* [197] */ MatcherIndex(38),
- /* [198] */ MatcherIndex(51),
- /* [199] */ MatcherIndex(50),
+ /* [143] */ MatcherIndex(4),
+ /* [144] */ MatcherIndex(1),
+ /* [145] */ MatcherIndex(22),
+ /* [146] */ MatcherIndex(4),
+ /* [147] */ MatcherIndex(2),
+ /* [148] */ MatcherIndex(22),
+ /* [149] */ MatcherIndex(4),
+ /* [150] */ MatcherIndex(3),
+ /* [151] */ MatcherIndex(22),
+ /* [152] */ MatcherIndex(0),
+ /* [153] */ MatcherIndex(2),
+ /* [154] */ MatcherIndex(12),
+ /* [155] */ MatcherIndex(6),
+ /* [156] */ MatcherIndex(46),
+ /* [157] */ MatcherIndex(34),
+ /* [158] */ MatcherIndex(10),
+ /* [159] */ MatcherIndex(6),
+ /* [160] */ MatcherIndex(10),
+ /* [161] */ MatcherIndex(2),
+ /* [162] */ MatcherIndex(46),
+ /* [163] */ MatcherIndex(35),
+ /* [164] */ MatcherIndex(11),
+ /* [165] */ MatcherIndex(6),
+ /* [166] */ MatcherIndex(46),
+ /* [167] */ MatcherIndex(36),
+ /* [168] */ MatcherIndex(46),
+ /* [169] */ MatcherIndex(37),
+ /* [170] */ MatcherIndex(12),
+ /* [171] */ MatcherIndex(0),
+ /* [172] */ MatcherIndex(10),
+ /* [173] */ MatcherIndex(1),
+ /* [174] */ MatcherIndex(11),
+ /* [175] */ MatcherIndex(1),
+ /* [176] */ MatcherIndex(33),
+ /* [177] */ MatcherIndex(0),
+ /* [178] */ MatcherIndex(10),
+ /* [179] */ MatcherIndex(8),
+ /* [180] */ MatcherIndex(10),
+ /* [181] */ MatcherIndex(3),
+ /* [182] */ MatcherIndex(10),
+ /* [183] */ MatcherIndex(9),
+ /* [184] */ MatcherIndex(11),
+ /* [185] */ MatcherIndex(9),
+ /* [186] */ MatcherIndex(12),
+ /* [187] */ MatcherIndex(8),
+ /* [188] */ MatcherIndex(12),
+ /* [189] */ MatcherIndex(9),
+ /* [190] */ MatcherIndex(11),
+ /* [191] */ MatcherIndex(2),
+ /* [192] */ MatcherIndex(44),
+ /* [193] */ MatcherIndex(0),
+ /* [194] */ MatcherIndex(10),
+ /* [195] */ MatcherIndex(0),
+ /* [196] */ MatcherIndex(11),
+ /* [197] */ MatcherIndex(0),
+ /* [198] */ MatcherIndex(17),
+ /* [199] */ MatcherIndex(0),
+ /* [200] */ MatcherIndex(21),
+ /* [201] */ MatcherIndex(0),
+ /* [202] */ MatcherIndex(49),
+ /* [203] */ MatcherIndex(48),
+ /* [204] */ MatcherIndex(50),
+ /* [205] */ MatcherIndex(38),
+ /* [206] */ MatcherIndex(53),
+ /* [207] */ MatcherIndex(52),
+ /* [208] */ MatcherIndex(51),
};
static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -1476,12 +1590,12 @@
{
/* [10] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(61),
},
{
/* [11] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [12] */
@@ -1491,27 +1605,27 @@
{
/* [13] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [14] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [15] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [16] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(55),
+ /* matcher_indices */ MatcherIndicesIndex(64),
},
{
/* [17] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [18] */
@@ -1521,27 +1635,27 @@
{
/* [19] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [20] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [21] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [22] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(58),
+ /* matcher_indices */ MatcherIndicesIndex(67),
},
{
/* [23] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [24] */
@@ -1551,32 +1665,32 @@
{
/* [25] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [26] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [27] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(181),
+ /* matcher_indices */ MatcherIndicesIndex(190),
},
{
/* [28] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(147),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [29] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [30] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [31] */
@@ -1586,27 +1700,27 @@
{
/* [32] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [33] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [34] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(153),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [35] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [36] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [37] */
@@ -1616,22 +1730,22 @@
{
/* [38] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [39] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [40] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(147),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [41] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [42] */
@@ -1646,17 +1760,17 @@
{
/* [44] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [45] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(153),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [46] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [47] */
@@ -1671,17 +1785,17 @@
{
/* [49] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [50] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(61),
},
{
/* [51] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [52] */
@@ -1696,17 +1810,17 @@
{
/* [54] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(169),
+ /* matcher_indices */ MatcherIndicesIndex(178),
},
{
/* [55] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(55),
+ /* matcher_indices */ MatcherIndicesIndex(64),
},
{
/* [56] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [57] */
@@ -1721,17 +1835,17 @@
{
/* [59] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(171),
+ /* matcher_indices */ MatcherIndicesIndex(180),
},
{
/* [60] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(61),
},
{
/* [61] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [62] */
@@ -1741,22 +1855,22 @@
{
/* [63] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [64] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [65] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(55),
+ /* matcher_indices */ MatcherIndicesIndex(64),
},
{
/* [66] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [67] */
@@ -1766,22 +1880,22 @@
{
/* [68] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [69] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [70] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(58),
+ /* matcher_indices */ MatcherIndicesIndex(67),
},
{
/* [71] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [72] */
@@ -1791,22 +1905,22 @@
{
/* [73] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [74] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(181),
+ /* matcher_indices */ MatcherIndicesIndex(190),
},
{
/* [75] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(61),
},
{
/* [76] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [77] */
@@ -1816,22 +1930,22 @@
{
/* [78] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [79] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [80] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(61),
+ /* matcher_indices */ MatcherIndicesIndex(70),
},
{
/* [81] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [82] */
@@ -1841,22 +1955,22 @@
{
/* [83] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [84] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [85] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(64),
+ /* matcher_indices */ MatcherIndicesIndex(73),
},
{
/* [86] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [87] */
@@ -1866,22 +1980,22 @@
{
/* [88] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [89] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [90] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(147),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [91] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [92] */
@@ -1891,22 +2005,22 @@
{
/* [93] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [94] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [95] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(153),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [96] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [97] */
@@ -1916,27 +2030,27 @@
{
/* [98] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [99] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [100] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(147),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [101] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [102] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [103] */
@@ -1946,22 +2060,22 @@
{
/* [104] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [105] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(153),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [106] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [107] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [108] */
@@ -1971,22 +2085,22 @@
{
/* [109] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [110] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(157),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [111] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [112] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [113] */
@@ -1996,22 +2110,22 @@
{
/* [114] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [115] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(159),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [116] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [117] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [118] */
@@ -2021,42 +2135,42 @@
{
/* [119] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [120] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(13),
+ /* matcher_indices */ MatcherIndicesIndex(51),
},
{
/* [121] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(18),
},
{
/* [122] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(89),
},
{
/* [123] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(89),
},
{
/* [124] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(157),
+ /* matcher_indices */ MatcherIndicesIndex(89),
},
{
/* [125] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(13),
},
{
/* [126] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [127] */
@@ -2066,137 +2180,137 @@
{
/* [128] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(159),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [129] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [130] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [131] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [132] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(50),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [133] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [134] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [135] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [136] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [137] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(59),
},
{
/* [138] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [139] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [140] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(56),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [141] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(165),
+ /* matcher_indices */ MatcherIndicesIndex(62),
},
{
/* [142] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [143] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [144] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(59),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [145] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(165),
+ /* matcher_indices */ MatcherIndicesIndex(65),
},
{
/* [146] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(174),
},
{
/* [147] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [148] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(167),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [149] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(68),
},
{
/* [150] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(174),
},
{
/* [151] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [152] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(148),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [153] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(176),
},
{
/* [154] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [155] */
@@ -2206,27 +2320,27 @@
{
/* [156] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(154),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [157] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(165),
+ /* matcher_indices */ MatcherIndicesIndex(157),
},
{
/* [158] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [159] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [160] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(197),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [161] */
@@ -2236,662 +2350,662 @@
{
/* [162] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(174),
},
{
/* [163] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [164] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(49),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [165] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(205),
},
{
/* [166] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [167] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [168] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(58),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [169] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(58),
},
{
/* [170] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [171] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [172] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(61),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [173] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(67),
},
{
/* [174] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [175] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [176] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(64),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [177] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(70),
},
{
/* [178] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [179] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [180] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [181] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(73),
},
{
/* [182] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [183] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [184] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(55),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [185] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(61),
},
{
/* [186] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [187] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [188] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(58),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [189] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(64),
},
{
/* [190] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [191] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(181),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [192] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(61),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [193] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(67),
},
{
/* [194] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [195] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [196] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(64),
+ /* matcher_indices */ MatcherIndicesIndex(190),
},
{
/* [197] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(70),
},
{
/* [198] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [199] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [200] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(147),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [201] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(149),
+ /* matcher_indices */ MatcherIndicesIndex(73),
},
{
/* [202] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [203] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [204] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(153),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [205] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [206] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [207] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [208] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(157),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [209] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(155),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [210] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [211] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [212] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(159),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [213] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [214] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [215] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [216] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(79),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [217] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [218] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [219] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [220] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(82),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [221] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(88),
},
{
/* [222] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(177),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [223] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [224] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(85),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [225] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(91),
},
{
/* [226] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(179),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [227] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(186),
},
{
/* [228] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(88),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [229] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(185),
+ /* matcher_indices */ MatcherIndicesIndex(94),
},
{
/* [230] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [231] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(188),
},
{
/* [232] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(91),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [233] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(185),
+ /* matcher_indices */ MatcherIndicesIndex(97),
},
{
/* [234] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(177),
+ /* matcher_indices */ MatcherIndicesIndex(194),
},
{
/* [235] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [236] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(94),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [237] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(185),
+ /* matcher_indices */ MatcherIndicesIndex(100),
},
{
/* [238] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(179),
+ /* matcher_indices */ MatcherIndicesIndex(194),
},
{
/* [239] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(186),
},
{
/* [240] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(97),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [241] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [242] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(194),
},
{
/* [243] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(188),
},
{
/* [244] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [245] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(106),
},
{
/* [246] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(177),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [247] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [248] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(103),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [249] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [250] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(179),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [251] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(186),
},
{
/* [252] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [253] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(112),
},
{
/* [254] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [255] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(188),
},
{
/* [256] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(109),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [257] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(115),
},
{
/* [258] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(177),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [259] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [260] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(112),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [261] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(118),
},
{
/* [262] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(179),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [263] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(186),
},
{
/* [264] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(67),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [265] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(121),
},
{
/* [266] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(196),
},
{
/* [267] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(70),
+ /* matcher_indices */ MatcherIndicesIndex(188),
},
{
/* [268] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(151),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [269] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(76),
},
{
/* [270] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(73),
+ /* matcher_indices */ MatcherIndicesIndex(1),
},
{
/* [271] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(181),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [272] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(79),
},
{
/* [273] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(76),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [274] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(181),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [275] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(82),
},
{
/* [276] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(49),
+ /* matcher_indices */ MatcherIndicesIndex(190),
},
{
/* [277] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(19),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [278] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(85),
},
{
/* [279] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(17),
+ /* matcher_indices */ MatcherIndicesIndex(190),
},
{
/* [280] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [281] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(58),
},
{
/* [282] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(24),
},
{
/* [283] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(46),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [284] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(46),
+ /* matcher_indices */ MatcherIndicesIndex(17),
},
{
/* [285] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [286] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [287] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(136),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [288] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(139),
+ /* matcher_indices */ MatcherIndicesIndex(55),
},
{
/* [289] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(55),
},
{
/* [290] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(151),
},
{
/* [291] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(142),
},
{
/* [292] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [293] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [294] */
@@ -2901,47 +3015,47 @@
{
/* [295] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(30),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [296] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(80),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [297] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(80),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [298] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(80),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [299] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(18),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [300] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(35),
},
{
/* [301] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* matcher_indices */ MatcherIndicesIndex(23),
},
{
/* [302] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [303] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(56),
+ /* matcher_indices */ MatcherIndicesIndex(62),
},
{
/* [304] */
@@ -2951,7 +3065,7 @@
{
/* [305] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(59),
+ /* matcher_indices */ MatcherIndicesIndex(65),
},
{
/* [306] */
@@ -2961,7 +3075,7 @@
{
/* [307] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(62),
+ /* matcher_indices */ MatcherIndicesIndex(68),
},
{
/* [308] */
@@ -2971,7 +3085,7 @@
{
/* [309] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(65),
+ /* matcher_indices */ MatcherIndicesIndex(71),
},
{
/* [310] */
@@ -2981,17 +3095,17 @@
{
/* [311] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(148),
+ /* matcher_indices */ MatcherIndicesIndex(74),
},
{
/* [312] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [313] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(154),
+ /* matcher_indices */ MatcherIndicesIndex(157),
},
{
/* [314] */
@@ -3001,7 +3115,7 @@
{
/* [315] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(158),
+ /* matcher_indices */ MatcherIndicesIndex(163),
},
{
/* [316] */
@@ -3011,7 +3125,7 @@
{
/* [317] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(160),
+ /* matcher_indices */ MatcherIndicesIndex(167),
},
{
/* [318] */
@@ -3020,112 +3134,122 @@
},
{
/* [319] */
- /* usage */ core::ParameterUsage::kInputAttachment,
- /* matcher_indices */ MatcherIndicesIndex(183),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(169),
},
{
/* [320] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(163),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [321] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(26),
+ /* usage */ core::ParameterUsage::kInputAttachment,
+ /* matcher_indices */ MatcherIndicesIndex(192),
},
{
/* [322] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(30),
+ /* matcher_indices */ MatcherIndicesIndex(172),
},
{
/* [323] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(34),
+ /* matcher_indices */ MatcherIndicesIndex(31),
},
{
/* [324] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(35),
},
{
/* [325] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(34),
+ /* matcher_indices */ MatcherIndicesIndex(39),
},
{
/* [326] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [327] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(39),
},
{
/* [328] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(127),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [329] */
- /* usage */ core::ParameterUsage::kX,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(133),
},
{
/* [330] */
- /* usage */ core::ParameterUsage::kI,
- /* matcher_indices */ MatcherIndicesIndex(38),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [331] */
/* usage */ core::ParameterUsage::kX,
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [332] */
/* usage */ core::ParameterUsage::kI,
- /* matcher_indices */ MatcherIndicesIndex(0),
+ /* matcher_indices */ MatcherIndicesIndex(43),
},
{
/* [333] */
/* usage */ core::ParameterUsage::kX,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [334] */
/* usage */ core::ParameterUsage::kI,
- /* matcher_indices */ MatcherIndicesIndex(42),
+ /* matcher_indices */ MatcherIndicesIndex(0),
},
{
/* [335] */
/* usage */ core::ParameterUsage::kX,
- /* matcher_indices */ MatcherIndicesIndex(115),
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [336] */
/* usage */ core::ParameterUsage::kI,
- /* matcher_indices */ MatcherIndicesIndex(7),
+ /* matcher_indices */ MatcherIndicesIndex(47),
},
{
/* [337] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(5),
+ /* usage */ core::ParameterUsage::kX,
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
/* [338] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(189),
+ /* usage */ core::ParameterUsage::kI,
+ /* matcher_indices */ MatcherIndicesIndex(7),
},
{
/* [339] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(191),
+ /* matcher_indices */ MatcherIndicesIndex(5),
},
{
/* [340] */
/* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(198),
+ },
+ {
+ /* [341] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(200),
+ },
+ {
+ /* [342] */
+ /* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(9),
},
};
@@ -3137,25 +3261,25 @@
{
/* [0] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [1] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [2] */
/* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [3] */
/* name */ "V",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -3167,145 +3291,145 @@
{
/* [5] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [6] */
/* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [7] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* matcher_indices */ MatcherIndicesIndex(204),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [8] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [9] */
/* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [10] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [11] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* matcher_indices */ MatcherIndicesIndex(204),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [12] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [13] */
/* name */ "B",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [14] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [15] */
/* name */ "D",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [16] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(80),
+ /* matcher_indices */ MatcherIndicesIndex(89),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [17] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [18] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [19] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [20] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(83),
+ /* matcher_indices */ MatcherIndicesIndex(92),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [21] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [22] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [23] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [24] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(86),
+ /* matcher_indices */ MatcherIndicesIndex(95),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [25] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(154),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [26] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [27] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [28] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -3329,19 +3453,19 @@
{
/* [32] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [33] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [34] */
/* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -3353,19 +3477,19 @@
{
/* [36] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(199),
+ /* matcher_indices */ MatcherIndicesIndex(207),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [37] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [38] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -3377,109 +3501,109 @@
{
/* [40] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(170),
+ /* matcher_indices */ MatcherIndicesIndex(179),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [41] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(193),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "K",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [42] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(80),
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(208),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [43] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(194),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [44] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(19),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [45] */
- /* name */ "B",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [46] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(89),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [47] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(193),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(52),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [48] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(24),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [49] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "B",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [50] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [51] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [52] */
- /* name */ "D",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [53] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [54] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(204),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [55] */
- /* name */ "M",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(202),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [56] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "D",
+ /* matcher_indices */ MatcherIndicesIndex(202),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [57] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -3490,86 +3614,110 @@
},
{
/* [59] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "M",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [60] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(202),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [61] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(202),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [62] */
/* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [61] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(170),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [62] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
/* [63] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(193),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [64] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(170),
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [65] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(80),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(179),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [66] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(203),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [67] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(202),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [68] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(179),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [69] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(89),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [70] */
/* name */ "A",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [67] */
+ /* [71] */
/* name */ "F",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [68] */
+ /* [72] */
/* name */ "A",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [69] */
+ /* [73] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* matcher_indices */ MatcherIndicesIndex(204),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [70] */
+ /* [74] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(198),
+ /* matcher_indices */ MatcherIndicesIndex(206),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [71] */
+ /* [75] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(195),
+ /* matcher_indices */ MatcherIndicesIndex(203),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [72] */
+ /* [76] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(170),
+ /* matcher_indices */ MatcherIndicesIndex(179),
/* kind */ TemplateInfo::Kind::kNumber,
},
};
@@ -3585,8 +3733,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(276),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(281),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3597,7 +3745,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(10),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3608,7 +3756,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(60),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3617,9 +3765,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(60),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3628,9 +3776,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(180),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(54),
+ /* parameters */ ParameterIndex(185),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3641,7 +3789,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(16),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3652,7 +3800,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(65),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3661,9 +3809,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(184),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(54),
+ /* parameters */ ParameterIndex(189),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3672,9 +3820,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(65),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3685,7 +3833,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(22),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3696,7 +3844,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(70),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3705,9 +3853,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(70),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3716,9 +3864,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(188),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(54),
+ /* parameters */ ParameterIndex(193),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3729,7 +3877,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(80),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3739,8 +3887,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(192),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(197),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3751,7 +3899,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3761,8 +3909,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(196),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(201),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3773,7 +3921,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(40),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3783,8 +3931,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(200),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(205),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3794,8 +3942,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(124),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(129),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3806,7 +3954,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(45),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3816,8 +3964,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(204),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(209),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3827,8 +3975,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(128),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(133),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3839,7 +3987,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(60),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3850,7 +3998,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(10),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3859,9 +4007,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(60),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3870,9 +4018,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(75),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3881,9 +4029,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(10),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3894,7 +4042,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(65),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3905,7 +4053,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(16),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3914,9 +4062,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(65),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3925,9 +4073,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(16),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3938,7 +4086,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(70),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3949,7 +4097,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(22),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3958,9 +4106,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(70),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3969,9 +4117,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(50),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(22),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3981,8 +4129,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(192),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(197),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3993,7 +4141,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(80),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4003,8 +4151,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(196),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(201),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4015,7 +4163,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4026,7 +4174,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(90),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4037,7 +4185,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(90),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4048,7 +4196,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4059,7 +4207,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4069,8 +4217,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(208),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(213),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4080,8 +4228,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(212),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(217),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4091,8 +4239,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(132),
- /* return_matcher_indices */ MatcherIndicesIndex(80),
+ /* parameters */ ParameterIndex(137),
+ /* return_matcher_indices */ MatcherIndicesIndex(89),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4102,8 +4250,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(136),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(141),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4113,8 +4261,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(140),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4124,8 +4272,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(144),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(149),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4135,8 +4283,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(307),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(309),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4146,8 +4294,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(309),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(311),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4157,8 +4305,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(148),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(153),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4168,8 +4316,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(152),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(157),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4179,8 +4327,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(156),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4190,8 +4338,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(315),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(317),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4201,8 +4349,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(317),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(319),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4212,8 +4360,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(160),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4222,9 +4370,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(67),
- /* parameters */ ParameterIndex(264),
- /* return_matcher_indices */ MatcherIndicesIndex(80),
+ /* templates */ TemplateIndex(71),
+ /* parameters */ ParameterIndex(269),
+ /* return_matcher_indices */ MatcherIndicesIndex(89),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4233,9 +4381,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(67),
- /* parameters */ ParameterIndex(267),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* templates */ TemplateIndex(71),
+ /* parameters */ ParameterIndex(272),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4244,9 +4392,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(67),
- /* parameters */ ParameterIndex(270),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* templates */ TemplateIndex(71),
+ /* parameters */ ParameterIndex(275),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4255,9 +4403,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(67),
- /* parameters */ ParameterIndex(273),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* templates */ TemplateIndex(71),
+ /* parameters */ ParameterIndex(278),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4267,8 +4415,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(164),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(169),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4279,7 +4427,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
/* parameters */ ParameterIndex(50),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4290,7 +4438,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
/* parameters */ ParameterIndex(50),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4301,7 +4449,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
/* parameters */ ParameterIndex(55),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4312,7 +4460,7 @@
/* num_templates */ 4,
/* templates */ TemplateIndex(11),
/* parameters */ ParameterIndex(55),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4322,8 +4470,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(168),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(173),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4333,8 +4481,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(172),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(177),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4344,8 +4492,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 3,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(176),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(181),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4356,7 +4504,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
/* parameters */ ParameterIndex(40),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4367,7 +4515,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(12),
/* parameters */ ParameterIndex(40),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4378,7 +4526,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
/* parameters */ ParameterIndex(45),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4389,7 +4537,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(12),
/* parameters */ ParameterIndex(45),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4399,8 +4547,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(124),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(129),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4410,8 +4558,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(128),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(133),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4421,8 +4569,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(264),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(269),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4432,8 +4580,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(264),
- /* return_matcher_indices */ MatcherIndicesIndex(177),
+ /* parameters */ ParameterIndex(269),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4443,8 +4591,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(24),
- /* parameters */ ParameterIndex(264),
- /* return_matcher_indices */ MatcherIndicesIndex(179),
+ /* parameters */ ParameterIndex(269),
+ /* return_matcher_indices */ MatcherIndicesIndex(188),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4454,8 +4602,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(267),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(272),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4465,8 +4613,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(267),
- /* return_matcher_indices */ MatcherIndicesIndex(177),
+ /* parameters */ ParameterIndex(272),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4476,8 +4624,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(24),
- /* parameters */ ParameterIndex(267),
- /* return_matcher_indices */ MatcherIndicesIndex(179),
+ /* parameters */ ParameterIndex(272),
+ /* return_matcher_indices */ MatcherIndicesIndex(188),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4487,8 +4635,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(270),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(275),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4498,8 +4646,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(270),
- /* return_matcher_indices */ MatcherIndicesIndex(177),
+ /* parameters */ ParameterIndex(275),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4509,8 +4657,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(24),
- /* parameters */ ParameterIndex(270),
- /* return_matcher_indices */ MatcherIndicesIndex(179),
+ /* parameters */ ParameterIndex(275),
+ /* return_matcher_indices */ MatcherIndicesIndex(188),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4520,8 +4668,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(273),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* parameters */ ParameterIndex(278),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4531,8 +4679,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(273),
- /* return_matcher_indices */ MatcherIndicesIndex(177),
+ /* parameters */ ParameterIndex(278),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4542,8 +4690,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(24),
- /* parameters */ ParameterIndex(273),
- /* return_matcher_indices */ MatcherIndicesIndex(179),
+ /* parameters */ ParameterIndex(278),
+ /* return_matcher_indices */ MatcherIndicesIndex(188),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4553,8 +4701,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(319),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(321),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4564,7 +4712,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(216),
+ /* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4575,7 +4723,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(220),
+ /* parameters */ ParameterIndex(225),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4586,7 +4734,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(224),
+ /* parameters */ ParameterIndex(229),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4597,7 +4745,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(228),
+ /* parameters */ ParameterIndex(233),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4608,7 +4756,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(232),
+ /* parameters */ ParameterIndex(237),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4619,7 +4767,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(236),
+ /* parameters */ ParameterIndex(241),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4630,7 +4778,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(240),
+ /* parameters */ ParameterIndex(245),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4641,7 +4789,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(244),
+ /* parameters */ ParameterIndex(249),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4652,7 +4800,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(248),
+ /* parameters */ ParameterIndex(253),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4663,7 +4811,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(252),
+ /* parameters */ ParameterIndex(257),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4674,7 +4822,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(256),
+ /* parameters */ ParameterIndex(261),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4685,7 +4833,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(260),
+ /* parameters */ ParameterIndex(265),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4696,8 +4844,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(132),
- /* return_matcher_indices */ MatcherIndicesIndex(80),
+ /* parameters */ ParameterIndex(137),
+ /* return_matcher_indices */ MatcherIndicesIndex(89),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4707,8 +4855,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(301),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(303),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4718,8 +4866,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(303),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(305),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4729,8 +4877,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(305),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(307),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4740,8 +4888,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(307),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(309),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4751,8 +4899,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(309),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(311),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4762,8 +4910,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(311),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(313),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4773,8 +4921,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(313),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(315),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4784,8 +4932,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(315),
- /* return_matcher_indices */ MatcherIndicesIndex(173),
+ /* parameters */ ParameterIndex(317),
+ /* return_matcher_indices */ MatcherIndicesIndex(182),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4795,8 +4943,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(317),
- /* return_matcher_indices */ MatcherIndicesIndex(175),
+ /* parameters */ ParameterIndex(319),
+ /* return_matcher_indices */ MatcherIndicesIndex(184),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4805,9 +4953,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(132),
- /* return_matcher_indices */ MatcherIndicesIndex(49),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(137),
+ /* return_matcher_indices */ MatcherIndicesIndex(58),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4816,9 +4964,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(301),
- /* return_matcher_indices */ MatcherIndicesIndex(52),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(303),
+ /* return_matcher_indices */ MatcherIndicesIndex(61),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4827,9 +4975,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(303),
- /* return_matcher_indices */ MatcherIndicesIndex(55),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(305),
+ /* return_matcher_indices */ MatcherIndicesIndex(64),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4838,9 +4986,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(305),
- /* return_matcher_indices */ MatcherIndicesIndex(58),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(307),
+ /* return_matcher_indices */ MatcherIndicesIndex(67),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4849,9 +4997,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(307),
- /* return_matcher_indices */ MatcherIndicesIndex(61),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(309),
+ /* return_matcher_indices */ MatcherIndicesIndex(70),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4860,9 +5008,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(69),
- /* parameters */ ParameterIndex(309),
- /* return_matcher_indices */ MatcherIndicesIndex(64),
+ /* templates */ TemplateIndex(73),
+ /* parameters */ ParameterIndex(311),
+ /* return_matcher_indices */ MatcherIndicesIndex(73),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4871,9 +5019,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(70),
- /* parameters */ ParameterIndex(311),
- /* return_matcher_indices */ MatcherIndicesIndex(147),
+ /* templates */ TemplateIndex(74),
+ /* parameters */ ParameterIndex(313),
+ /* return_matcher_indices */ MatcherIndicesIndex(156),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4882,9 +5030,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(70),
- /* parameters */ ParameterIndex(313),
- /* return_matcher_indices */ MatcherIndicesIndex(153),
+ /* templates */ TemplateIndex(74),
+ /* parameters */ ParameterIndex(315),
+ /* return_matcher_indices */ MatcherIndicesIndex(162),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4893,9 +5041,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(70),
- /* parameters */ ParameterIndex(315),
- /* return_matcher_indices */ MatcherIndicesIndex(157),
+ /* templates */ TemplateIndex(74),
+ /* parameters */ ParameterIndex(317),
+ /* return_matcher_indices */ MatcherIndicesIndex(166),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4904,9 +5052,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(70),
- /* parameters */ ParameterIndex(317),
- /* return_matcher_indices */ MatcherIndicesIndex(159),
+ /* templates */ TemplateIndex(74),
+ /* parameters */ ParameterIndex(319),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4916,8 +5064,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(132),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(137),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4927,8 +5075,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(136),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(141),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4938,8 +5086,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(140),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4949,8 +5097,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(144),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(149),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4960,8 +5108,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(7),
- /* parameters */ ParameterIndex(148),
- /* return_matcher_indices */ MatcherIndicesIndex(161),
+ /* parameters */ ParameterIndex(153),
+ /* return_matcher_indices */ MatcherIndicesIndex(170),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4970,9 +5118,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
- /* parameters */ ParameterIndex(152),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(51),
+ /* parameters */ ParameterIndex(157),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4981,9 +5129,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
- /* parameters */ ParameterIndex(156),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(51),
+ /* parameters */ ParameterIndex(161),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4992,9 +5140,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
- /* parameters */ ParameterIndex(160),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(51),
+ /* parameters */ ParameterIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5003,9 +5151,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(44),
+ /* templates */ TemplateIndex(48),
/* parameters */ ParameterIndex(40),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5014,9 +5162,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(44),
+ /* templates */ TemplateIndex(48),
/* parameters */ ParameterIndex(40),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5025,9 +5173,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(44),
+ /* templates */ TemplateIndex(48),
/* parameters */ ParameterIndex(45),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5036,9 +5184,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(44),
+ /* templates */ TemplateIndex(48),
/* parameters */ ParameterIndex(45),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5047,9 +5195,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(44),
- /* parameters */ ParameterIndex(124),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(48),
+ /* parameters */ ParameterIndex(129),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5058,9 +5206,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(44),
- /* parameters */ ParameterIndex(128),
- /* return_matcher_indices */ MatcherIndicesIndex(145),
+ /* templates */ TemplateIndex(48),
+ /* parameters */ ParameterIndex(133),
+ /* return_matcher_indices */ MatcherIndicesIndex(154),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5071,7 +5219,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(28),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5082,7 +5230,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(100),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5093,7 +5241,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(34),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5104,7 +5252,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(105),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5115,7 +5263,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(110),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5126,7 +5274,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(115),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5137,7 +5285,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(28),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5148,7 +5296,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(28),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5159,7 +5307,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(34),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5170,7 +5318,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(34),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5181,7 +5329,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(110),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5192,7 +5340,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(8),
/* parameters */ ParameterIndex(115),
- /* return_matcher_indices */ MatcherIndicesIndex(19),
+ /* return_matcher_indices */ MatcherIndicesIndex(24),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5202,7 +5350,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(337),
+ /* parameters */ ParameterIndex(339),
/* return_matcher_indices */ MatcherIndicesIndex(5),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5213,8 +5361,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(338),
- /* return_matcher_indices */ MatcherIndicesIndex(189),
+ /* parameters */ ParameterIndex(340),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5224,8 +5372,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(339),
- /* return_matcher_indices */ MatcherIndicesIndex(191),
+ /* parameters */ ParameterIndex(341),
+ /* return_matcher_indices */ MatcherIndicesIndex(200),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5235,7 +5383,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(36),
- /* parameters */ ParameterIndex(279),
+ /* parameters */ ParameterIndex(284),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5246,8 +5394,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(35),
- /* parameters */ ParameterIndex(282),
- /* return_matcher_indices */ MatcherIndicesIndex(46),
+ /* parameters */ ParameterIndex(287),
+ /* return_matcher_indices */ MatcherIndicesIndex(55),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5268,8 +5416,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(283),
- /* return_matcher_indices */ MatcherIndicesIndex(46),
+ /* parameters */ ParameterIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(55),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5289,9 +5437,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(340),
- /* return_matcher_indices */ MatcherIndicesIndex(115),
+ /* templates */ TemplateIndex(60),
+ /* parameters */ ParameterIndex(342),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5312,8 +5460,8 @@
/* num_explicit_templates */ 1,
/* num_templates */ 4,
/* templates */ TemplateIndex(32),
- /* parameters */ ParameterIndex(327),
- /* return_matcher_indices */ MatcherIndicesIndex(121),
+ /* parameters */ ParameterIndex(329),
+ /* return_matcher_indices */ MatcherIndicesIndex(130),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5334,8 +5482,8 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(0),
- /* parameters */ ParameterIndex(286),
- /* return_matcher_indices */ MatcherIndicesIndex(130),
+ /* parameters */ ParameterIndex(291),
+ /* return_matcher_indices */ MatcherIndicesIndex(139),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5355,8 +5503,8 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(289),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(294),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5377,8 +5525,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(289),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(294),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5399,8 +5547,8 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(292),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(297),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5422,8 +5570,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 3,
/* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(284),
- /* return_matcher_indices */ MatcherIndicesIndex(46),
+ /* parameters */ ParameterIndex(289),
+ /* return_matcher_indices */ MatcherIndicesIndex(55),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5432,8 +5580,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(71),
- /* parameters */ ParameterIndex(329),
+ /* templates */ TemplateIndex(75),
+ /* parameters */ ParameterIndex(331),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5443,8 +5591,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(59),
- /* parameters */ ParameterIndex(331),
+ /* templates */ TemplateIndex(63),
+ /* parameters */ ParameterIndex(333),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5454,8 +5602,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(62),
- /* parameters */ ParameterIndex(333),
+ /* templates */ TemplateIndex(66),
+ /* parameters */ ParameterIndex(335),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5466,8 +5614,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(37),
- /* parameters */ ParameterIndex(335),
- /* return_matcher_indices */ MatcherIndicesIndex(115),
+ /* parameters */ ParameterIndex(337),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5476,9 +5624,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(65),
- /* parameters */ ParameterIndex(299),
- /* return_matcher_indices */ MatcherIndicesIndex(80),
+ /* templates */ TemplateIndex(69),
+ /* parameters */ ParameterIndex(301),
+ /* return_matcher_indices */ MatcherIndicesIndex(89),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5487,8 +5635,8 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(41),
- /* parameters */ ParameterIndex(120),
+ /* templates */ TemplateIndex(45),
+ /* parameters */ ParameterIndex(125),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5498,7 +5646,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(41),
+ /* templates */ TemplateIndex(45),
/* parameters */ ParameterIndex(0),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5509,7 +5657,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(41),
+ /* templates */ TemplateIndex(45),
/* parameters */ ParameterIndex(0),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5520,8 +5668,8 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(41),
- /* parameters */ ParameterIndex(120),
+ /* templates */ TemplateIndex(45),
+ /* parameters */ ParameterIndex(125),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5532,7 +5680,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(283),
+ /* parameters */ ParameterIndex(288),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5543,8 +5691,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 4,
/* templates */ TemplateIndex(28),
- /* parameters */ ParameterIndex(321),
- /* return_matcher_indices */ MatcherIndicesIndex(22),
+ /* parameters */ ParameterIndex(323),
+ /* return_matcher_indices */ MatcherIndicesIndex(27),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5553,9 +5701,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(323),
- /* return_matcher_indices */ MatcherIndicesIndex(34),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(325),
+ /* return_matcher_indices */ MatcherIndicesIndex(39),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5564,9 +5712,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(325),
- /* return_matcher_indices */ MatcherIndicesIndex(115),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(327),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5575,9 +5723,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(294),
- /* return_matcher_indices */ MatcherIndicesIndex(115),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(299),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5586,8 +5734,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(290),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(295),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5598,8 +5746,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(296),
- /* return_matcher_indices */ MatcherIndicesIndex(170),
+ /* parameters */ ParameterIndex(122),
+ /* return_matcher_indices */ MatcherIndicesIndex(179),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5609,8 +5757,19 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(296),
- /* return_matcher_indices */ MatcherIndicesIndex(80),
+ /* parameters */ ParameterIndex(122),
+ /* return_matcher_indices */ MatcherIndicesIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [185] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 5,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(41),
+ /* parameters */ ParameterIndex(120),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
};
@@ -6099,6 +6258,12 @@
/* num overloads */ 1,
/* overloads */ OverloadIndex(184),
},
+ {
+ /* [54] */
+ /* fn cooperative_matrix_store[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num](ptr<workgroup_or_storage, S, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32) */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(185),
+ },
};
// clang-format on
diff --git a/src/tint/lang/spirv/spirv.def b/src/tint/lang/spirv/spirv.def
index 9e2ec4a..7a99a5f 100644
--- a/src/tint/lang/spirv/spirv.def
+++ b/src/tint/lang/spirv/spirv.def
@@ -37,6 +37,7 @@
import "src/tint/lang/core/address_space.def"
import "src/tint/lang/core/access.def"
+import "src/tint/lang/core/subgroup_matrix_kind.def"
import "src/tint/lang/core/texel_format.def"
type bool
@@ -83,9 +84,12 @@
type struct_with_runtime_array
type sampled_image<T>
+type subgroup_matrix<S: subgroup_matrix_kind, T, C: num, R: num>
+
match f32_f16: f32 | f16
match iu32: i32 | u32
match fiu32: f32 | i32 | u32
+match fiu32_f16: f32 | i32 | u32 | f16
match scalar: f32 | f16 | i32 | u32 | bool
match read_write: access.read_write
@@ -134,6 +138,10 @@
: access.write
| access.read_write
+match subgroup_matrix_kind_left : subgroup_matrix_kind.left
+match subgroup_matrix_kind_right : subgroup_matrix_kind.right
+match subgroup_matrix_kind_result : subgroup_matrix_kind.result
+
////////////////////////////////////////////////////////////////////////////////
// Builtin Functions //
////////////////////////////////////////////////////////////////////////////////
@@ -386,3 +394,9 @@
////////////////////////////////////////////////////////////////////////////////
fn sdot(u32, u32, u32) -> i32
fn udot(u32, u32, u32) -> u32
+
+////////////////////////////////////////////////////////////////////////////////
+// SPV_KHR_cooperative_matrix instructions
+////////////////////////////////////////////////////////////////////////////////
+@stage("compute") implicit(K: subgroup_matrix_kind, S: fiu32_f16, C: num, R: num) fn cooperative_matrix_store(
+ ptr<workgroup_or_storage, S, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32)
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 6d2c5dc..28483f5 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -1488,6 +1488,9 @@
case spirv::BuiltinFn::kVectorTimesScalar:
op = spv::Op::OpVectorTimesScalar;
break;
+ case spirv::BuiltinFn::kCooperativeMatrixStore:
+ op = spv::Op::OpCooperativeMatrixStoreKHR;
+ break;
case spirv::BuiltinFn::kNone:
TINT_ICE() << "undefined spirv ir function";
}
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
index 1048fbc..9644d55 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
@@ -107,6 +107,7 @@
case core::BuiltinFn::kTextureSampleLevel:
case core::BuiltinFn::kTextureStore:
case core::BuiltinFn::kInputAttachmentLoad:
+ case core::BuiltinFn::kSubgroupMatrixStore:
worklist.Push(builtin);
break;
case core::BuiltinFn::kQuantizeToF16:
@@ -188,6 +189,9 @@
case core::BuiltinFn::kInputAttachmentLoad:
InputAttachmentLoad(builtin);
break;
+ case core::BuiltinFn::kSubgroupMatrixStore:
+ SubgroupMatrixStore(builtin);
+ break;
default:
break;
}
@@ -954,6 +958,34 @@
builtin->SetArg(1, b.Constant(id->As<core::ir::Constant>()->Value()->ValueAs<u32>()));
}
}
+
+ /// Replace a subgroupMatrixStore builtin.
+ /// @param builtin the builtin call instruction
+ void SubgroupMatrixStore(core::ir::CoreBuiltinCall* builtin) {
+ b.InsertBefore(builtin, [&] {
+ auto* p = builtin->Args()[0];
+ auto* offset = builtin->Args()[1];
+ auto* value = builtin->Args()[2];
+ auto* col_major = builtin->Args()[3]->As<core::ir::Constant>();
+ auto* stride = builtin->Args()[4];
+
+ auto* ptr = p->Type()->As<core::type::Pointer>();
+ auto* arr = ptr->StoreType()->As<core::type::Array>();
+
+ // Make a pointer to the first element of the array that we will write to.
+ auto* elem_ptr = ty.ptr(ptr->AddressSpace(), arr->ElemType(), ptr->Access());
+ auto* dst = b.Access(elem_ptr, p, offset);
+
+ auto* layout = b.Constant(u32(col_major->Value()->ValueAs<bool>()
+ ? SpvCooperativeMatrixLayoutColumnMajorKHR
+ : SpvCooperativeMatrixLayoutRowMajorKHR));
+ auto* memory_operand = Literal(u32(SpvMemoryAccessNonPrivatePointerMask));
+
+ b.Call<spirv::ir::BuiltinCall>(ty.void_(), spirv::BuiltinFn::kCooperativeMatrixStore,
+ dst, value, layout, stride, memory_operand);
+ });
+ builtin->Destroy();
+ }
};
} // namespace
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
index c055cca..8ebfe97 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
@@ -3210,5 +3210,75 @@
EXPECT_EQ(expect, str());
}
+TEST_F(SpirvWriter_BuiltinPolyfillTest, SubgroupMatrixStore_Storage_ColMajor_F32) {
+ auto* p = b.FunctionParam<ptr<storage, array<f32, 256>>>("p");
+ auto* m = b.FunctionParam("m", ty.subgroup_matrix_result(ty.f32(), 8, 8));
+ auto* func = b.Function("foo", ty.void_());
+ func->SetParams({p, m});
+ b.Append(func->Block(), [&] {
+ b.Call<void>(core::BuiltinFn::kSubgroupMatrixStore, p, 64_u, m, true, 32_u);
+ b.Return(func);
+ });
+
+ auto* src = R"(
+%foo = func(%p:ptr<storage, array<f32, 256>, read_write>, %m:subgroup_matrix_result<f32, 8, 8>):void {
+ $B1: {
+ %4:void = subgroupMatrixStore %p, 64u, %m, true, 32u
+ ret
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%p:ptr<storage, array<f32, 256>, read_write>, %m:subgroup_matrix_result<f32, 8, 8>):void {
+ $B1: {
+ %4:ptr<storage, f32, read_write> = access %p, 64u
+ %5:void = spirv.cooperative_matrix_store %4, %m, 1u, 32u, 32u
+ ret
+ }
+}
+)";
+
+ Run(BuiltinPolyfill, true);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(SpirvWriter_BuiltinPolyfillTest, SubgroupMatrixStore_Workgroup_RowMajor_U32) {
+ auto* p = b.FunctionParam<ptr<workgroup, array<u32, 256>>>("p");
+ auto* m = b.FunctionParam("m", ty.subgroup_matrix_result(ty.u32(), 8, 8));
+ auto* func = b.Function("foo", ty.void_());
+ func->SetParams({p, m});
+ b.Append(func->Block(), [&] {
+ b.Call<void>(core::BuiltinFn::kSubgroupMatrixStore, p, 64_u, m, false, 32_u);
+ b.Return(func);
+ });
+
+ auto* src = R"(
+%foo = func(%p:ptr<workgroup, array<u32, 256>, read_write>, %m:subgroup_matrix_result<u32, 8, 8>):void {
+ $B1: {
+ %4:void = subgroupMatrixStore %p, 64u, %m, false, 32u
+ ret
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%p:ptr<workgroup, array<u32, 256>, read_write>, %m:subgroup_matrix_result<u32, 8, 8>):void {
+ $B1: {
+ %4:ptr<workgroup, u32, read_write> = access %p, 64u
+ %5:void = spirv.cooperative_matrix_store %4, %m, 0u, 32u, 32u
+ ret
+ }
+}
+)";
+
+ Run(BuiltinPolyfill, true);
+
+ EXPECT_EQ(expect, str());
+}
+
} // namespace
} // namespace tint::spirv::writer::raise
diff --git a/src/tint/lang/spirv/writer/writer.cc b/src/tint/lang/spirv/writer/writer.cc
index 9d0d926..cd336a7 100644
--- a/src/tint/lang/spirv/writer/writer.cc
+++ b/src/tint/lang/spirv/writer/writer.cc
@@ -42,13 +42,6 @@
namespace tint::spirv::writer {
Result<SuccessType> CanGenerate(const core::ir::Module& ir, const Options& options) {
- // Check for unsupported types.
- for (auto* ty : ir.Types()) {
- if (ty->Is<core::type::SubgroupMatrix>()) {
- return Failure("subgroup matrices are not supported by the SPIR-V backend");
- }
- }
-
// If a remapped entry point name is provided, it must not be empty, and must not contain
// embedded null characters.
if (!options.remapped_entry_point_name.empty()) {
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
index 5c64c6a..09a4199 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
@@ -1,5 +1,59 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_0522d1 "subgroupMatrixStore_0522d1"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_0522d1 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %20 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+ OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_0522d1
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
index 5c64c6a..cfe3607 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
@@ -1,5 +1,86 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_127fb7 "subgroupMatrixStore_127fb7"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_127fb7 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_half %arg_0 %31
+ OpStore %37 %half_0x0p_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_127fb7
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
index 5c64c6a..3978309 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
@@ -1,5 +1,60 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 28
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_1466ba "subgroupMatrixStore_1466ba"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_1466ba = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %26 = OpLabel
+ %27 = OpFunctionCall %void %subgroupMatrixStore_1466ba
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
index 5c64c6a..6ac60b3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
@@ -1,5 +1,56 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_184580 "subgroupMatrixStore_184580"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%subgroupMatrixStore_184580 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_184580
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
index 5c64c6a..9a0bbb4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
@@ -1,5 +1,56 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_197435 "subgroupMatrixStore_197435"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_197435 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %20 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+ OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_197435
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
index 5c64c6a..fda3265 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
@@ -1,5 +1,82 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 45
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_2de0b1 "subgroupMatrixStore_2de0b1"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
+ %12 = OpConstantNull %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %22 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_0 = OpConstant %uint 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_2de0b1 = OpFunction %void None %10
+ %11 = OpLabel
+ %17 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %17 %12 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %22
+%tint_local_index = OpFunctionParameter %uint
+ %23 = OpLabel
+ OpBranch %24
+ %24 = OpLabel
+ OpBranch %27
+ %27 = OpLabel
+ %29 = OpPhi %uint %tint_local_index %24 %30 %26
+ OpLoopMerge %28 %26 None
+ OpBranch %25
+ %25 = OpLabel
+ %31 = OpUGreaterThanEqual %bool %29 %uint_64
+ OpSelectionMerge %33 None
+ OpBranchConditional %31 %34 %33
+ %34 = OpLabel
+ OpBranch %28
+ %33 = OpLabel
+ %35 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %29
+ OpStore %35 %uint_0 NonPrivatePointer
+ OpBranch %26
+ %26 = OpLabel
+ %30 = OpIAdd %uint %29 %uint_1
+ OpBranch %27
+ %28 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %40 = OpFunctionCall %void %subgroupMatrixStore_2de0b1
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %42 = OpLabel
+ %43 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %44 = OpFunctionCall %void %compute_main_inner %43
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
index 5c64c6a..653db40 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
@@ -1,5 +1,56 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_3fcc0f "subgroupMatrixStore_3fcc0f"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+%subgroupMatrixStore_3fcc0f = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
index 5c64c6a..a0b1231 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
@@ -1,5 +1,83 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_49b25b "subgroupMatrixStore_49b25b"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %23 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_49b25b = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %23
+%tint_local_index = OpFunctionParameter %uint
+ %24 = OpLabel
+ OpBranch %25
+ %25 = OpLabel
+ OpBranch %28
+ %28 = OpLabel
+ %30 = OpPhi %uint %tint_local_index %25 %31 %27
+ OpLoopMerge %29 %27 None
+ OpBranch %26
+ %26 = OpLabel
+ %32 = OpUGreaterThanEqual %bool %30 %uint_64
+ OpSelectionMerge %34 None
+ OpBranchConditional %32 %35 %34
+ %35 = OpLabel
+ OpBranch %29
+ %34 = OpLabel
+ %36 = OpAccessChain %_ptr_Workgroup_float %arg_0 %30
+ OpStore %36 %float_0 NonPrivatePointer
+ OpBranch %27
+ %27 = OpLabel
+ %31 = OpIAdd %uint %30 %uint_1
+ OpBranch %28
+ %29 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_49b25b
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
index 5c64c6a..f9d90b1 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
@@ -1,5 +1,83 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_5671e2 "subgroupMatrixStore_5671e2"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %23 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_5671e2 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %23
+%tint_local_index = OpFunctionParameter %uint
+ %24 = OpLabel
+ OpBranch %25
+ %25 = OpLabel
+ OpBranch %28
+ %28 = OpLabel
+ %30 = OpPhi %uint %tint_local_index %25 %31 %27
+ OpLoopMerge %29 %27 None
+ OpBranch %26
+ %26 = OpLabel
+ %32 = OpUGreaterThanEqual %bool %30 %uint_64
+ OpSelectionMerge %34 None
+ OpBranchConditional %32 %35 %34
+ %35 = OpLabel
+ OpBranch %29
+ %34 = OpLabel
+ %36 = OpAccessChain %_ptr_Workgroup_int %arg_0 %30
+ OpStore %36 %int_0 NonPrivatePointer
+ OpBranch %27
+ %27 = OpLabel
+ %31 = OpIAdd %uint %30 %uint_1
+ OpBranch %28
+ %29 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_5671e2
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
index 5c64c6a..7ac5e24 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
@@ -1,5 +1,55 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 26
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_57de92 "subgroupMatrixStore_57de92"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
+ %15 = OpConstantNull %16
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%subgroupMatrixStore_57de92 = OpFunction %void None %10
+ %11 = OpLabel
+ %12 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %20 = OpAccessChain %_ptr_StorageBuffer_uint %12 %uint_1
+ OpCooperativeMatrixStoreKHR %20 %15 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %24 = OpLabel
+ %25 = OpFunctionCall %void %subgroupMatrixStore_57de92
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
index 5c64c6a..b2ea17b 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
@@ -1,5 +1,82 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 45
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_5915fe "subgroupMatrixStore_5915fe"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
+ %12 = OpConstantNull %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %uint_1 = OpConstant %uint 1
+ %23 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_5915fe = OpFunction %void None %10
+ %11 = OpLabel
+ %17 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %17 %12 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %23
+%tint_local_index = OpFunctionParameter %uint
+ %24 = OpLabel
+ OpBranch %25
+ %25 = OpLabel
+ OpBranch %28
+ %28 = OpLabel
+ %30 = OpPhi %uint %tint_local_index %25 %31 %27
+ OpLoopMerge %29 %27 None
+ OpBranch %26
+ %26 = OpLabel
+ %32 = OpUGreaterThanEqual %bool %30 %uint_64
+ OpSelectionMerge %34 None
+ OpBranchConditional %32 %35 %34
+ %35 = OpLabel
+ OpBranch %29
+ %34 = OpLabel
+ %36 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %30
+ OpStore %36 %uint_0 NonPrivatePointer
+ OpBranch %27
+ %27 = OpLabel
+ %31 = OpIAdd %uint %30 %uint_1
+ OpBranch %28
+ %29 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %40 = OpFunctionCall %void %subgroupMatrixStore_5915fe
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %42 = OpLabel
+ %43 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %44 = OpFunctionCall %void %compute_main_inner %43
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
index 5c64c6a..6ec0c48 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
@@ -1,5 +1,57 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 28
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_8a2280 "subgroupMatrixStore_8a2280"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_8a2280 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %26 = OpLabel
+ %27 = OpFunctionCall %void %subgroupMatrixStore_8a2280
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
index 5c64c6a..d93c8ea 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
@@ -1,5 +1,56 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_9019ee "subgroupMatrixStore_9019ee"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_9019ee = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %20 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+ OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_9019ee
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
index 5c64c6a..c1f3a32 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
@@ -1,5 +1,82 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 45
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_9a7d60 "subgroupMatrixStore_9a7d60"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
+ %12 = OpConstantNull %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %uint_1 = OpConstant %uint 1
+ %23 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_0 = OpConstant %uint 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_9a7d60 = OpFunction %void None %10
+ %11 = OpLabel
+ %17 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %17 %12 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %23
+%tint_local_index = OpFunctionParameter %uint
+ %24 = OpLabel
+ OpBranch %25
+ %25 = OpLabel
+ OpBranch %28
+ %28 = OpLabel
+ %30 = OpPhi %uint %tint_local_index %25 %31 %27
+ OpLoopMerge %29 %27 None
+ OpBranch %26
+ %26 = OpLabel
+ %32 = OpUGreaterThanEqual %bool %30 %uint_64
+ OpSelectionMerge %34 None
+ OpBranchConditional %32 %35 %34
+ %35 = OpLabel
+ OpBranch %29
+ %34 = OpLabel
+ %36 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %30
+ OpStore %36 %uint_0 NonPrivatePointer
+ OpBranch %27
+ %27 = OpLabel
+ %31 = OpIAdd %uint %30 %uint_1
+ OpBranch %28
+ %29 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %40 = OpFunctionCall %void %subgroupMatrixStore_9a7d60
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %42 = OpLabel
+ %43 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %44 = OpFunctionCall %void %compute_main_inner %43
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
index 5c64c6a..6bd5c3c 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
@@ -1,5 +1,57 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 28
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_9fffe5 "subgroupMatrixStore_9fffe5"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_9fffe5 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %26 = OpLabel
+ %27 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
index 5c64c6a..95f1d23 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
@@ -1,5 +1,83 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_b9ff25 "subgroupMatrixStore_b9ff25"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_b9ff25 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_float %arg_0 %31
+ OpStore %37 %float_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_b9ff25
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
index 5c64c6a..66dcc4f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
@@ -1,5 +1,59 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_ba9442 "subgroupMatrixStore_ba9442"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+%subgroupMatrixStore_ba9442 = OpFunction %void None %11
+ %12 = OpLabel
+ %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+ OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_ba9442
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
index 5c64c6a..8da2eb8 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
@@ -1,5 +1,84 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 47
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_bfd0a4 "subgroupMatrixStore_bfd0a4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_bfd0a4 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_int %arg_0 %31
+ OpStore %37 %int_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %void %subgroupMatrixStore_bfd0a4
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %44 = OpLabel
+ %45 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %46 = OpFunctionCall %void %compute_main_inner %45
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
index 5c64c6a..93f02a9 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
@@ -1,5 +1,86 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_d07581 "subgroupMatrixStore_d07581"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_1 = OpConstant %uint 1
+ %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %23 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_d07581 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %23
+%tint_local_index = OpFunctionParameter %uint
+ %24 = OpLabel
+ OpBranch %25
+ %25 = OpLabel
+ OpBranch %28
+ %28 = OpLabel
+ %30 = OpPhi %uint %tint_local_index %25 %31 %27
+ OpLoopMerge %29 %27 None
+ OpBranch %26
+ %26 = OpLabel
+ %32 = OpUGreaterThanEqual %bool %30 %uint_64
+ OpSelectionMerge %34 None
+ OpBranchConditional %32 %35 %34
+ %35 = OpLabel
+ OpBranch %29
+ %34 = OpLabel
+ %36 = OpAccessChain %_ptr_Workgroup_half %arg_0 %30
+ OpStore %36 %half_0x0p_0 NonPrivatePointer
+ OpBranch %27
+ %27 = OpLabel
+ %31 = OpIAdd %uint %30 %uint_1
+ OpBranch %28
+ %29 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_d07581
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
index 5c64c6a..18a5581 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
@@ -1,5 +1,55 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 26
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_db6dd2 "subgroupMatrixStore_db6dd2"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
+ %15 = OpConstantNull %16
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_db6dd2 = OpFunction %void None %10
+ %11 = OpLabel
+ %12 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %19 = OpAccessChain %_ptr_StorageBuffer_uint %12 %uint_1
+ OpCooperativeMatrixStoreKHR %19 %15 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %24 = OpLabel
+ %25 = OpFunctionCall %void %subgroupMatrixStore_db6dd2
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
index 5c64c6a..686dcb7 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
@@ -1,5 +1,84 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 47
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_dc92cf "subgroupMatrixStore_dc92cf"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_dc92cf = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_float %arg_0 %31
+ OpStore %37 %float_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %void %subgroupMatrixStore_dc92cf
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %44 = OpLabel
+ %45 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %46 = OpFunctionCall %void %compute_main_inner %45
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
index 5c64c6a..39a85fc 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
@@ -1,5 +1,56 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 27
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_dce0b7 "subgroupMatrixStore_dce0b7"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+ %uint_0 = OpConstant %uint 0
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
+ %15 = OpConstantNull %16
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%subgroupMatrixStore_dce0b7 = OpFunction %void None %10
+ %11 = OpLabel
+ %12 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %20 = OpAccessChain %_ptr_StorageBuffer_uint %12 %uint_1
+ OpCooperativeMatrixStoreKHR %20 %15 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %subgroupMatrixStore_dce0b7
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
index 5c64c6a..408d4b4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
@@ -1,5 +1,87 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 47
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_ee1195 "subgroupMatrixStore_ee1195"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_ee1195 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_half %arg_0 %31
+ OpStore %37 %half_0x0p_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %void %subgroupMatrixStore_ee1195
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %44 = OpLabel
+ %45 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %46 = OpFunctionCall %void %compute_main_inner %45
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
index 5c64c6a..0185986 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
@@ -1,5 +1,83 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 46
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_f04d67 "subgroupMatrixStore_f04d67"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
+ %13 = OpConstantNull %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %uint_1 = OpConstant %uint 1
+ %24 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_f04d67 = OpFunction %void None %11
+ %12 = OpLabel
+ %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %24
+%tint_local_index = OpFunctionParameter %uint
+ %25 = OpLabel
+ OpBranch %26
+ %26 = OpLabel
+ OpBranch %29
+ %29 = OpLabel
+ %31 = OpPhi %uint %tint_local_index %26 %32 %28
+ OpLoopMerge %30 %28 None
+ OpBranch %27
+ %27 = OpLabel
+ %33 = OpUGreaterThanEqual %bool %31 %uint_64
+ OpSelectionMerge %35 None
+ OpBranchConditional %33 %36 %35
+ %36 = OpLabel
+ OpBranch %30
+ %35 = OpLabel
+ %37 = OpAccessChain %_ptr_Workgroup_int %arg_0 %31
+ OpStore %37 %int_0 NonPrivatePointer
+ OpBranch %28
+ %28 = OpLabel
+ %32 = OpIAdd %uint %31 %uint_1
+ OpBranch %29
+ %30 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %void %subgroupMatrixStore_f04d67
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %43 = OpLabel
+ %44 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %45 = OpFunctionCall %void %compute_main_inner %44
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
index 5c64c6a..e11f2a0 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
@@ -1,5 +1,73 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_0522d1 "subgroupMatrixStore_0522d1"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+%subgroupMatrixStore_0522d1 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_half %24 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_0522d1
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
index 5c64c6a..5c4e6c7 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
@@ -1,5 +1,100 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_127fb7 "subgroupMatrixStore_127fb7"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_127fb7 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_half %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_half %arg_0 %39
+ OpStore %45 %half_0x0p_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_127fb7
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
index 5c64c6a..3c14426 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
@@ -1,5 +1,74 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_1466ba "subgroupMatrixStore_1466ba"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+%subgroupMatrixStore_1466ba = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %17 %arg_2 None
+ %29 = OpLoad %uint %arg_4 None
+ %30 = OpAccessChain %_ptr_StorageBuffer_half %24 %27
+ OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %subgroupMatrixStore_1466ba
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
index 5c64c6a..570c0e2 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
@@ -1,5 +1,70 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_184580 "subgroupMatrixStore_184580"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%subgroupMatrixStore_184580 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_184580
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
index 5c64c6a..1effe2b 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
@@ -1,5 +1,70 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_197435 "subgroupMatrixStore_197435"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+%subgroupMatrixStore_197435 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_float %24 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_197435
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
index 5c64c6a..d29c443 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
@@ -1,5 +1,96 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 53
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_2de0b1 "subgroupMatrixStore_2de0b1"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %30 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_0 = OpConstant %uint 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_2de0b1 = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %22 = OpLoad %uint %arg_1 None
+ %23 = OpLoad %16 %arg_2 None
+ %24 = OpLoad %uint %arg_4 None
+ %25 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %22
+ OpCooperativeMatrixStoreKHR %25 %23 %uint_1 %24 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %30
+%tint_local_index = OpFunctionParameter %uint
+ %31 = OpLabel
+ OpBranch %32
+ %32 = OpLabel
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpPhi %uint %tint_local_index %32 %38 %34
+ OpLoopMerge %36 %34 None
+ OpBranch %33
+ %33 = OpLabel
+ %39 = OpUGreaterThanEqual %bool %37 %uint_64
+ OpSelectionMerge %41 None
+ OpBranchConditional %39 %42 %41
+ %42 = OpLabel
+ OpBranch %36
+ %41 = OpLabel
+ %43 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %37
+ OpStore %43 %uint_0 NonPrivatePointer
+ OpBranch %34
+ %34 = OpLabel
+ %38 = OpIAdd %uint %37 %uint_1
+ OpBranch %35
+ %36 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %48 = OpFunctionCall %void %subgroupMatrixStore_2de0b1
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %50 = OpLabel
+ %51 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %52 = OpFunctionCall %void %compute_main_inner %51
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
index 5c64c6a..d1b978c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
@@ -1,5 +1,70 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_3fcc0f "subgroupMatrixStore_3fcc0f"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+%subgroupMatrixStore_3fcc0f = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_float %23 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
index 5c64c6a..9fdf5e5 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
@@ -1,5 +1,97 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_49b25b "subgroupMatrixStore_49b25b"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %31 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_49b25b = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpLoad %uint %arg_1 None
+ %24 = OpLoad %17 %arg_2 None
+ %25 = OpLoad %uint %arg_4 None
+ %26 = OpAccessChain %_ptr_Workgroup_float %arg_0 %23
+ OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %40 = OpUGreaterThanEqual %bool %38 %uint_64
+ OpSelectionMerge %42 None
+ OpBranchConditional %40 %43 %42
+ %43 = OpLabel
+ OpBranch %37
+ %42 = OpLabel
+ %44 = OpAccessChain %_ptr_Workgroup_float %arg_0 %38
+ OpStore %44 %float_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_49b25b
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
index 5c64c6a..34bb952 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
@@ -1,5 +1,97 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_5671e2 "subgroupMatrixStore_5671e2"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %31 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_5671e2 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpLoad %uint %arg_1 None
+ %24 = OpLoad %17 %arg_2 None
+ %25 = OpLoad %uint %arg_4 None
+ %26 = OpAccessChain %_ptr_Workgroup_int %arg_0 %23
+ OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %40 = OpUGreaterThanEqual %bool %38 %uint_64
+ OpSelectionMerge %42 None
+ OpBranchConditional %40 %43 %42
+ %43 = OpLabel
+ OpBranch %37
+ %42 = OpLabel
+ %44 = OpAccessChain %_ptr_Workgroup_int %arg_0 %38
+ OpStore %44 %int_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_5671e2
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
index 5c64c6a..1151558 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
@@ -1,5 +1,69 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 34
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_57de92 "subgroupMatrixStore_57de92"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%subgroupMatrixStore_57de92 = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %22 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %16 %arg_2 None
+ %27 = OpLoad %uint %arg_4 None
+ %28 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+ OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %32 = OpLabel
+ %33 = OpFunctionCall %void %subgroupMatrixStore_57de92
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
index 5c64c6a..ed0f769 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
@@ -1,5 +1,96 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 53
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_5915fe "subgroupMatrixStore_5915fe"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %31 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_5915fe = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %23 = OpLoad %uint %arg_1 None
+ %24 = OpLoad %16 %arg_2 None
+ %25 = OpLoad %uint %arg_4 None
+ %26 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %23
+ OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %40 = OpUGreaterThanEqual %bool %38 %uint_64
+ OpSelectionMerge %42 None
+ OpBranchConditional %40 %43 %42
+ %43 = OpLabel
+ OpBranch %37
+ %42 = OpLabel
+ %44 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %38
+ OpStore %44 %uint_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %48 = OpFunctionCall %void %subgroupMatrixStore_5915fe
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %50 = OpLabel
+ %51 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %52 = OpFunctionCall %void %compute_main_inner %51
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
index 5c64c6a..3a309cd 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
@@ -1,5 +1,71 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_8a2280 "subgroupMatrixStore_8a2280"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+ %SB_RW = OpTypeStruct %_arr_float_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
+%subgroupMatrixStore_8a2280 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %17 %arg_2 None
+ %29 = OpLoad %uint %arg_4 None
+ %30 = OpAccessChain %_ptr_StorageBuffer_float %24 %27
+ OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %subgroupMatrixStore_8a2280
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
index 5c64c6a..f541909 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
@@ -1,5 +1,70 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_9019ee "subgroupMatrixStore_9019ee"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%subgroupMatrixStore_9019ee = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_9019ee
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
index 5c64c6a..3b784d3 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
@@ -1,5 +1,96 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 53
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_9a7d60 "subgroupMatrixStore_9a7d60"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+%_ptr_Workgroup__arr_uint_uint_64 = OpTypePointer Workgroup %_arr_uint_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %31 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %uint_0 = OpConstant %uint 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_9a7d60 = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %23 = OpLoad %uint %arg_1 None
+ %24 = OpLoad %16 %arg_2 None
+ %25 = OpLoad %uint %arg_4 None
+ %26 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %23
+ OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %40 = OpUGreaterThanEqual %bool %38 %uint_64
+ OpSelectionMerge %42 None
+ OpBranchConditional %40 %43 %42
+ %43 = OpLabel
+ OpBranch %37
+ %42 = OpLabel
+ %44 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %38
+ OpStore %44 %uint_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %48 = OpFunctionCall %void %subgroupMatrixStore_9a7d60
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %50 = OpLabel
+ %51 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %52 = OpFunctionCall %void %compute_main_inner %51
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
index 5c64c6a..30c82eb 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
@@ -1,5 +1,71 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_9fffe5 "subgroupMatrixStore_9fffe5"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+ %SB_RW = OpTypeStruct %_arr_int_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%subgroupMatrixStore_9fffe5 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %17 %arg_2 None
+ %29 = OpLoad %uint %arg_4 None
+ %30 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+ OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
index 5c64c6a..89d47ba 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
@@ -1,5 +1,97 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_b9ff25 "subgroupMatrixStore_b9ff25"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_b9ff25 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_float %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_float %arg_0 %39
+ OpStore %45 %float_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_b9ff25
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
index 5c64c6a..37a41c9 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
@@ -1,5 +1,73 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_ba9442 "subgroupMatrixStore_ba9442"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+ %SB_RW = OpTypeStruct %_arr_half_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
+%subgroupMatrixStore_ba9442 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %17 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_half %23 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_ba9442
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
index 5c64c6a..3797b3e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
@@ -1,5 +1,98 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_bfd0a4 "subgroupMatrixStore_bfd0a4"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_bfd0a4 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_int %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_int %arg_0 %39
+ OpStore %45 %int_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %50 = OpFunctionCall %void %subgroupMatrixStore_bfd0a4
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %52 = OpLabel
+ %53 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %54 = OpFunctionCall %void %compute_main_inner %53
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
index 5c64c6a..d7545a8 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
@@ -1,5 +1,100 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_d07581 "subgroupMatrixStore_d07581"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %31 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_d07581 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %23 = OpLoad %uint %arg_1 None
+ %24 = OpLoad %17 %arg_2 None
+ %25 = OpLoad %uint %arg_4 None
+ %26 = OpAccessChain %_ptr_Workgroup_half %arg_0 %23
+ OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %40 = OpUGreaterThanEqual %bool %38 %uint_64
+ OpSelectionMerge %42 None
+ OpBranchConditional %40 %43 %42
+ %43 = OpLabel
+ OpBranch %37
+ %42 = OpLabel
+ %44 = OpAccessChain %_ptr_Workgroup_half %arg_0 %38
+ OpStore %44 %half_0x0p_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_d07581
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
index 5c64c6a..53a369e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
@@ -1,5 +1,69 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 34
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_db6dd2 "subgroupMatrixStore_db6dd2"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%subgroupMatrixStore_db6dd2 = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %16 %arg_2 None
+ %27 = OpLoad %uint %arg_4 None
+ %28 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
+ OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %32 = OpLabel
+ %33 = OpFunctionCall %void %subgroupMatrixStore_db6dd2
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
index 5c64c6a..714b3db 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
@@ -1,5 +1,98 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_dc92cf "subgroupMatrixStore_dc92cf"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_float_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %float = OpTypeFloat 32
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_float_uint_64 = OpTypeArray %float %uint_64
+%_ptr_Workgroup__arr_float_uint_64 = OpTypePointer Workgroup %_arr_float_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_float_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %float_0 = OpConstant %float 0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_dc92cf = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_float %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_float %arg_0 %39
+ OpStore %45 %float_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %50 = OpFunctionCall %void %subgroupMatrixStore_dc92cf
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %52 = OpLabel
+ %53 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %54 = OpFunctionCall %void %compute_main_inner %53
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
index 5c64c6a..c1ac220 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
@@ -1,5 +1,70 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %SB_RW 0 "arg_0"
+ OpName %SB_RW "SB_RW"
+ OpMemberName %sb_rw_block 0 "inner"
+ OpName %sb_rw_block "sb_rw_block"
+ OpName %subgroupMatrixStore_dce0b7 "subgroupMatrixStore_dce0b7"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_64 ArrayStride 4
+ OpMemberDecorate %SB_RW 0 Offset 0
+ OpMemberDecorate %sb_rw_block 0 Offset 0
+ OpDecorate %sb_rw_block Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_uint_uint_64 = OpTypeArray %uint %uint_64
+ %SB_RW = OpTypeStruct %_arr_uint_uint_64
+%sb_rw_block = OpTypeStruct %SB_RW
+%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
+ %1 = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
+ %void = OpTypeVoid
+ %10 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
+ %15 = OpConstantNull %16
+%_ptr_Function_16 = OpTypePointer Function %16
+%_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%subgroupMatrixStore_dce0b7 = OpFunction %void None %10
+ %11 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_16 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %15
+ OpStore %arg_4 %uint_1
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %16 %arg_2 None
+ %28 = OpLoad %uint %arg_4 None
+ %29 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+ OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %10
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %subgroupMatrixStore_dce0b7
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
index 5c64c6a..9e1ac0f 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
@@ -1,5 +1,101 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability Float16
+ OpCapability UniformAndStorageBuffer16BitAccess
+ OpCapability StorageBuffer16BitAccess
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_ee1195 "subgroupMatrixStore_ee1195"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_half_uint_64 ArrayStride 2
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %half = OpTypeFloat 16
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_half_uint_64 = OpTypeArray %half %uint_64
+%_ptr_Workgroup__arr_half_uint_64 = OpTypePointer Workgroup %_arr_half_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_half_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_0 = OpConstant %uint 0
+ %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+%half_0x0p_0 = OpConstant %half 0x0p+0
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_ee1195 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_half %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_half %arg_0 %39
+ OpStore %45 %half_0x0p_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %50 = OpFunctionCall %void %subgroupMatrixStore_ee1195
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %52 = OpLabel
+ %53 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %54 = OpFunctionCall %void %compute_main_inner %53
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
index 5c64c6a..ab7cb63 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
@@ -1,5 +1,97 @@
-SKIP: FAILED
-
-error: subgroup matrices are not supported by the SPIR-V backend
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixStore_f04d67 "subgroupMatrixStore_f04d67"
+ OpName %arg_1 "arg_1"
+ OpName %arg_2 "arg_2"
+ OpName %arg_4 "arg_4"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_64 ArrayStride 4
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_64 = OpConstant %uint 64
+%_arr_int_uint_64 = OpTypeArray %int %uint_64
+%_ptr_Workgroup__arr_int_uint_64 = OpTypePointer Workgroup %_arr_int_uint_64
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_64 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %void = OpTypeVoid
+ %11 = OpTypeFunction %void
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uint_2 = OpConstant %uint 2
+ %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
+ %16 = OpConstantNull %17
+%_ptr_Function_17 = OpTypePointer Function %17
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %32 = OpTypeFunction %void %uint
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %uint_24840 = OpConstant %uint 24840
+%subgroupMatrixStore_f04d67 = OpFunction %void None %11
+ %12 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_2 = OpVariable %_ptr_Function_17 Function
+ %arg_4 = OpVariable %_ptr_Function_uint Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_2 %16
+ OpStore %arg_4 %uint_1
+ %24 = OpLoad %uint %arg_1 None
+ %25 = OpLoad %17 %arg_2 None
+ %26 = OpLoad %uint %arg_4 None
+ %27 = OpAccessChain %_ptr_Workgroup_int %arg_0 %24
+ OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %32
+%tint_local_index = OpFunctionParameter %uint
+ %33 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpPhi %uint %tint_local_index %34 %40 %36
+ OpLoopMerge %38 %36 None
+ OpBranch %35
+ %35 = OpLabel
+ %41 = OpUGreaterThanEqual %bool %39 %uint_64
+ OpSelectionMerge %43 None
+ OpBranchConditional %41 %44 %43
+ %44 = OpLabel
+ OpBranch %38
+ %43 = OpLabel
+ %45 = OpAccessChain %_ptr_Workgroup_int %arg_0 %39
+ OpStore %45 %int_0 NonPrivatePointer
+ OpBranch %36
+ %36 = OpLabel
+ %40 = OpIAdd %uint %39 %uint_1
+ OpBranch %37
+ %38 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %49 = OpFunctionCall %void %subgroupMatrixStore_f04d67
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %11
+ %51 = OpLabel
+ %52 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %53 = OpFunctionCall %void %compute_main_inner %52
+ OpReturn
+ OpFunctionEnd