[wgsl] Add subgroupMatrixStore builtin function

Add translation to/from core IR.

Restrict the permutations for E2E tests to avoid combinatorial
explosion.

Bug: 348702031
Change-Id: Ic73b3f83e6fc2267126e7a2c095a290af0c3eb15
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/224057
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/cmd/fuzz/wgsl/dictionary.txt b/src/tint/cmd/fuzz/wgsl/dictionary.txt
index c7f1de2..e42225b 100644
--- a/src/tint/cmd/fuzz/wgsl/dictionary.txt
+++ b/src/tint/cmd/fuzz/wgsl/dictionary.txt
@@ -394,6 +394,7 @@
 "subgroupExclusiveMul"
 "subgroupInclusiveAdd"
 "subgroupInclusiveMul"
+"subgroupMatrixStore"
 "subgroupMax"
 "subgroupMin"
 "subgroupMul"
@@ -404,6 +405,7 @@
 "subgroupShuffleXor"
 "subgroupXor"
 "subgroup_invocation_id"
+"subgroup_matrix"
 "subgroup_matrix_left"
 "subgroup_matrix_result"
 "subgroup_matrix_right"
diff --git a/src/tint/lang/core/builtin_fn.cc b/src/tint/lang/core/builtin_fn.cc
index 684309a..76ac17b 100644
--- a/src/tint/lang/core/builtin_fn.cc
+++ b/src/tint/lang/core/builtin_fn.cc
@@ -474,6 +474,9 @@
     if (name == "quadSwapDiagonal") {
         return BuiltinFn::kQuadSwapDiagonal;
     }
+    if (name == "subgroupMatrixStore") {
+        return BuiltinFn::kSubgroupMatrixStore;
+    }
     return BuiltinFn::kNone;
 }
 
@@ -771,6 +774,8 @@
             return "quadSwapY";
         case BuiltinFn::kQuadSwapDiagonal:
             return "quadSwapDiagonal";
+        case BuiltinFn::kSubgroupMatrixStore:
+            return "subgroupMatrixStore";
     }
     return "<unknown>";
 }
diff --git a/src/tint/lang/core/builtin_fn.h b/src/tint/lang/core/builtin_fn.h
index a6ae548..10786d9 100644
--- a/src/tint/lang/core/builtin_fn.h
+++ b/src/tint/lang/core/builtin_fn.h
@@ -192,6 +192,7 @@
     kQuadSwapX,
     kQuadSwapY,
     kQuadSwapDiagonal,
+    kSubgroupMatrixStore,
     kNone,
 };
 
@@ -359,6 +360,7 @@
     BuiltinFn::kQuadSwapX,
     BuiltinFn::kQuadSwapY,
     BuiltinFn::kQuadSwapDiagonal,
+    BuiltinFn::kSubgroupMatrixStore,
 };
 
 /// All builtin function names
@@ -508,6 +510,7 @@
     "quadSwapX",
     "quadSwapY",
     "quadSwapDiagonal",
+    "subgroupMatrixStore",
 };
 
 /// Determines if the given `f` is a coarse derivative.
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 1f7ae93..1684a89 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -283,6 +283,7 @@
 type ptr<S: address_space, T, A: access>
 type atomic<T>
 @display("array<{T}>") type runtime_array<T>
+type array<T, N: num>
 type sampler
 type sampler_comparison
 type texture_1d<T>
@@ -769,6 +770,8 @@
 @must_use @stage("fragment", "compute") implicit(T: fiu32_f16) fn quadSwapDiagonal(e: T) -> T
 @must_use @stage("fragment", "compute") implicit(N: num, T: fiu32_f16) fn quadSwapDiagonal(e: vec<N, T>) -> vec<N, T>
 
+@stage("compute") implicit(K: subgroup_matrix_kind, S: fiu32_f16, C: num, R: num, AC: num) fn subgroupMatrixStore(ptr<workgroup_or_storage, array<S, AC>, writable>, u32, subgroup_matrix<K, S, C, R>, bool, u32)
+
 ////////////////////////////////////////////////////////////////////////////////
 // Value constructors                                                         //
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/tint/lang/core/intrinsic/data.cc b/src/tint/lang/core/intrinsic/data.cc
index 3e2713c..b39e8bc 100644
--- a/src/tint/lang/core/intrinsic/data.cc
+++ b/src/tint/lang/core/intrinsic/data.cc
@@ -540,6 +540,32 @@
 };
 
 
+/// TypeMatcher for 'type array'
+constexpr TypeMatcher kArrayMatcher {
+/* match */ [](MatchState& state, const Type* ty) -> const Type* {
+  const Type* T = nullptr;
+  Number N = Number::invalid;
+    if (!MatchArray(state, ty, T, N)) {
+      return nullptr;
+    }
+    T = state.Type(T);
+    if (T == nullptr) {
+      return nullptr;
+    }
+    N = state.Num(N);
+    if (!N.IsValid()) {
+      return nullptr;
+    }
+    return BuildArray(state, ty, T, N);
+  },
+/* print */ []([[maybe_unused]] MatchState* state, StyledText& out) {StyledText T;
+  state->PrintType(T);StyledText N;
+  state->PrintNum(N);
+    out << style::Type("array", "<", T, ", ", N, ">");
+  }
+};
+
+
 /// TypeMatcher for 'type sampler'
 constexpr TypeMatcher kSamplerMatcher {
 /* match */ [](MatchState& state, const Type* ty) -> const Type* {
@@ -1574,69 +1600,71 @@
   /* [1] */ TemplateTypeMatcher<1>::matcher,
   /* [2] */ TemplateTypeMatcher<2>::matcher,
   /* [3] */ TemplateTypeMatcher<3>::matcher,
-  /* [4] */ kBoolMatcher,
-  /* [5] */ kI8Matcher,
-  /* [6] */ kU8Matcher,
-  /* [7] */ kI32Matcher,
-  /* [8] */ kU32Matcher,
-  /* [9] */ kF32Matcher,
-  /* [10] */ kF16Matcher,
-  /* [11] */ kVec2Matcher,
-  /* [12] */ kVec3Matcher,
-  /* [13] */ kVec4Matcher,
-  /* [14] */ kMat2X2Matcher,
-  /* [15] */ kMat2X3Matcher,
-  /* [16] */ kMat2X4Matcher,
-  /* [17] */ kMat3X2Matcher,
-  /* [18] */ kMat3X3Matcher,
-  /* [19] */ kMat3X4Matcher,
-  /* [20] */ kMat4X2Matcher,
-  /* [21] */ kMat4X3Matcher,
-  /* [22] */ kMat4X4Matcher,
-  /* [23] */ kVecMatcher,
-  /* [24] */ kMatMatcher,
-  /* [25] */ kPtrMatcher,
-  /* [26] */ kAtomicMatcher,
-  /* [27] */ kRuntimeArrayMatcher,
-  /* [28] */ kSamplerMatcher,
-  /* [29] */ kSamplerComparisonMatcher,
-  /* [30] */ kTexture1DMatcher,
-  /* [31] */ kTexture2DMatcher,
-  /* [32] */ kTexture2DArrayMatcher,
-  /* [33] */ kTexture3DMatcher,
-  /* [34] */ kTextureCubeMatcher,
-  /* [35] */ kTextureCubeArrayMatcher,
-  /* [36] */ kTextureMultisampled2DMatcher,
-  /* [37] */ kTextureDepth2DMatcher,
-  /* [38] */ kTextureDepth2DArrayMatcher,
-  /* [39] */ kTextureDepthCubeMatcher,
-  /* [40] */ kTextureDepthCubeArrayMatcher,
-  /* [41] */ kTextureDepthMultisampled2DMatcher,
-  /* [42] */ kTextureStorage1DMatcher,
-  /* [43] */ kTextureStorage2DMatcher,
-  /* [44] */ kTextureStorage2DArrayMatcher,
-  /* [45] */ kTextureStorage3DMatcher,
-  /* [46] */ kTextureExternalMatcher,
-  /* [47] */ kInputAttachmentMatcher,
-  /* [48] */ kModfResultMatcher,
-  /* [49] */ kModfResultVecMatcher,
-  /* [50] */ kFrexpResultMatcher,
-  /* [51] */ kFrexpResultVecMatcher,
-  /* [52] */ kAtomicCompareExchangeResultMatcher,
-  /* [53] */ kSubgroupMatrixMatcher,
-  /* [54] */ kScalarMatcher,
-  /* [55] */ kScalarNoF32Matcher,
-  /* [56] */ kScalarNoF16Matcher,
-  /* [57] */ kScalarNoI32Matcher,
-  /* [58] */ kScalarNoU32Matcher,
-  /* [59] */ kScalarNoBoolMatcher,
-  /* [60] */ kFiu32F16Matcher,
-  /* [61] */ kFiu32Matcher,
-  /* [62] */ kFi32F16Matcher,
-  /* [63] */ kFi32Matcher,
-  /* [64] */ kF32F16Matcher,
-  /* [65] */ kIu32Matcher,
-  /* [66] */ kSubgroupMatrixElementsMatcher,
+  /* [4] */ TemplateTypeMatcher<4>::matcher,
+  /* [5] */ kBoolMatcher,
+  /* [6] */ kI8Matcher,
+  /* [7] */ kU8Matcher,
+  /* [8] */ kI32Matcher,
+  /* [9] */ kU32Matcher,
+  /* [10] */ kF32Matcher,
+  /* [11] */ kF16Matcher,
+  /* [12] */ kVec2Matcher,
+  /* [13] */ kVec3Matcher,
+  /* [14] */ kVec4Matcher,
+  /* [15] */ kMat2X2Matcher,
+  /* [16] */ kMat2X3Matcher,
+  /* [17] */ kMat2X4Matcher,
+  /* [18] */ kMat3X2Matcher,
+  /* [19] */ kMat3X3Matcher,
+  /* [20] */ kMat3X4Matcher,
+  /* [21] */ kMat4X2Matcher,
+  /* [22] */ kMat4X3Matcher,
+  /* [23] */ kMat4X4Matcher,
+  /* [24] */ kVecMatcher,
+  /* [25] */ kMatMatcher,
+  /* [26] */ kPtrMatcher,
+  /* [27] */ kAtomicMatcher,
+  /* [28] */ kRuntimeArrayMatcher,
+  /* [29] */ kArrayMatcher,
+  /* [30] */ kSamplerMatcher,
+  /* [31] */ kSamplerComparisonMatcher,
+  /* [32] */ kTexture1DMatcher,
+  /* [33] */ kTexture2DMatcher,
+  /* [34] */ kTexture2DArrayMatcher,
+  /* [35] */ kTexture3DMatcher,
+  /* [36] */ kTextureCubeMatcher,
+  /* [37] */ kTextureCubeArrayMatcher,
+  /* [38] */ kTextureMultisampled2DMatcher,
+  /* [39] */ kTextureDepth2DMatcher,
+  /* [40] */ kTextureDepth2DArrayMatcher,
+  /* [41] */ kTextureDepthCubeMatcher,
+  /* [42] */ kTextureDepthCubeArrayMatcher,
+  /* [43] */ kTextureDepthMultisampled2DMatcher,
+  /* [44] */ kTextureStorage1DMatcher,
+  /* [45] */ kTextureStorage2DMatcher,
+  /* [46] */ kTextureStorage2DArrayMatcher,
+  /* [47] */ kTextureStorage3DMatcher,
+  /* [48] */ kTextureExternalMatcher,
+  /* [49] */ kInputAttachmentMatcher,
+  /* [50] */ kModfResultMatcher,
+  /* [51] */ kModfResultVecMatcher,
+  /* [52] */ kFrexpResultMatcher,
+  /* [53] */ kFrexpResultVecMatcher,
+  /* [54] */ kAtomicCompareExchangeResultMatcher,
+  /* [55] */ kSubgroupMatrixMatcher,
+  /* [56] */ kScalarMatcher,
+  /* [57] */ kScalarNoF32Matcher,
+  /* [58] */ kScalarNoF16Matcher,
+  /* [59] */ kScalarNoI32Matcher,
+  /* [60] */ kScalarNoU32Matcher,
+  /* [61] */ kScalarNoBoolMatcher,
+  /* [62] */ kFiu32F16Matcher,
+  /* [63] */ kFiu32Matcher,
+  /* [64] */ kFi32F16Matcher,
+  /* [65] */ kFi32Matcher,
+  /* [66] */ kF32F16Matcher,
+  /* [67] */ kIu32Matcher,
+  /* [68] */ kSubgroupMatrixElementsMatcher,
 };
 
 /// The template numbers, and number matchers
@@ -1645,317 +1673,329 @@
   /* [1] */ TemplateNumberMatcher<1>::matcher,
   /* [2] */ TemplateNumberMatcher<2>::matcher,
   /* [3] */ TemplateNumberMatcher<3>::matcher,
-  /* [4] */ kSubgroupMatrixKindLeftMatcher,
-  /* [5] */ kSubgroupMatrixKindRightMatcher,
-  /* [6] */ kSubgroupMatrixKindResultMatcher,
-  /* [7] */ kF32TexelFormatMatcher,
-  /* [8] */ kI32TexelFormatMatcher,
-  /* [9] */ kU32TexelFormatMatcher,
-  /* [10] */ kWriteMatcher,
-  /* [11] */ kReadWriteMatcher,
-  /* [12] */ kReadableMatcher,
-  /* [13] */ kWritableMatcher,
-  /* [14] */ kFunctionPrivateWorkgroupMatcher,
-  /* [15] */ kWorkgroupOrStorageMatcher,
-  /* [16] */ kStorageMatcher,
-  /* [17] */ kWorkgroupMatcher,
+  /* [4] */ TemplateNumberMatcher<4>::matcher,
+  /* [5] */ kSubgroupMatrixKindLeftMatcher,
+  /* [6] */ kSubgroupMatrixKindRightMatcher,
+  /* [7] */ kSubgroupMatrixKindResultMatcher,
+  /* [8] */ kF32TexelFormatMatcher,
+  /* [9] */ kI32TexelFormatMatcher,
+  /* [10] */ kU32TexelFormatMatcher,
+  /* [11] */ kWriteMatcher,
+  /* [12] */ kReadWriteMatcher,
+  /* [13] */ kReadableMatcher,
+  /* [14] */ kWritableMatcher,
+  /* [15] */ kFunctionPrivateWorkgroupMatcher,
+  /* [16] */ kWorkgroupOrStorageMatcher,
+  /* [17] */ kStorageMatcher,
+  /* [18] */ kWorkgroupMatcher,
 };
 
 constexpr MatcherIndex kMatcherIndices[] = {
-  /* [0] */ MatcherIndex(25),
+  /* [0] */ MatcherIndex(26),
   /* [1] */ MatcherIndex(16),
-  /* [2] */ MatcherIndex(27),
-  /* [3] */ MatcherIndex(0),
-  /* [4] */ MatcherIndex(1),
-  /* [5] */ MatcherIndex(25),
-  /* [6] */ MatcherIndex(1),
+  /* [2] */ MatcherIndex(29),
+  /* [3] */ MatcherIndex(1),
+  /* [4] */ MatcherIndex(4),
+  /* [5] */ MatcherIndex(14),
+  /* [6] */ MatcherIndex(10),
   /* [7] */ MatcherIndex(26),
-  /* [8] */ MatcherIndex(0),
-  /* [9] */ MatcherIndex(11),
-  /* [10] */ MatcherIndex(9),
-  /* [11] */ MatcherIndex(53),
-  /* [12] */ MatcherIndex(4),
-  /* [13] */ MatcherIndex(0),
-  /* [14] */ MatcherIndex(1),
-  /* [15] */ MatcherIndex(2),
-  /* [16] */ MatcherIndex(53),
-  /* [17] */ MatcherIndex(5),
-  /* [18] */ MatcherIndex(0),
-  /* [19] */ MatcherIndex(1),
-  /* [20] */ MatcherIndex(2),
-  /* [21] */ MatcherIndex(53),
-  /* [22] */ MatcherIndex(6),
-  /* [23] */ MatcherIndex(0),
-  /* [24] */ MatcherIndex(1),
-  /* [25] */ MatcherIndex(2),
-  /* [26] */ MatcherIndex(24),
-  /* [27] */ MatcherIndex(0),
-  /* [28] */ MatcherIndex(0),
-  /* [29] */ MatcherIndex(1),
-  /* [30] */ MatcherIndex(24),
+  /* [8] */ MatcherIndex(17),
+  /* [9] */ MatcherIndex(28),
+  /* [10] */ MatcherIndex(0),
+  /* [11] */ MatcherIndex(1),
+  /* [12] */ MatcherIndex(26),
+  /* [13] */ MatcherIndex(1),
+  /* [14] */ MatcherIndex(27),
+  /* [15] */ MatcherIndex(0),
+  /* [16] */ MatcherIndex(12),
+  /* [17] */ MatcherIndex(10),
+  /* [18] */ MatcherIndex(55),
+  /* [19] */ MatcherIndex(0),
+  /* [20] */ MatcherIndex(1),
+  /* [21] */ MatcherIndex(2),
+  /* [22] */ MatcherIndex(3),
+  /* [23] */ MatcherIndex(55),
+  /* [24] */ MatcherIndex(5),
+  /* [25] */ MatcherIndex(0),
+  /* [26] */ MatcherIndex(1),
+  /* [27] */ MatcherIndex(2),
+  /* [28] */ MatcherIndex(55),
+  /* [29] */ MatcherIndex(6),
+  /* [30] */ MatcherIndex(0),
   /* [31] */ MatcherIndex(1),
-  /* [32] */ MatcherIndex(0),
-  /* [33] */ MatcherIndex(2),
-  /* [34] */ MatcherIndex(24),
+  /* [32] */ MatcherIndex(2),
+  /* [33] */ MatcherIndex(55),
+  /* [34] */ MatcherIndex(7),
   /* [35] */ MatcherIndex(0),
   /* [36] */ MatcherIndex(1),
   /* [37] */ MatcherIndex(2),
-  /* [38] */ MatcherIndex(24),
-  /* [39] */ MatcherIndex(1),
-  /* [40] */ MatcherIndex(2),
-  /* [41] */ MatcherIndex(0),
-  /* [42] */ MatcherIndex(24),
-  /* [43] */ MatcherIndex(2),
-  /* [44] */ MatcherIndex(3),
-  /* [45] */ MatcherIndex(0),
-  /* [46] */ MatcherIndex(24),
-  /* [47] */ MatcherIndex(1),
-  /* [48] */ MatcherIndex(3),
-  /* [49] */ MatcherIndex(0),
-  /* [50] */ MatcherIndex(24),
-  /* [51] */ MatcherIndex(2),
-  /* [52] */ MatcherIndex(1),
+  /* [38] */ MatcherIndex(25),
+  /* [39] */ MatcherIndex(0),
+  /* [40] */ MatcherIndex(0),
+  /* [41] */ MatcherIndex(1),
+  /* [42] */ MatcherIndex(25),
+  /* [43] */ MatcherIndex(1),
+  /* [44] */ MatcherIndex(0),
+  /* [45] */ MatcherIndex(2),
+  /* [46] */ MatcherIndex(25),
+  /* [47] */ MatcherIndex(0),
+  /* [48] */ MatcherIndex(1),
+  /* [49] */ MatcherIndex(2),
+  /* [50] */ MatcherIndex(25),
+  /* [51] */ MatcherIndex(1),
+  /* [52] */ MatcherIndex(2),
   /* [53] */ MatcherIndex(0),
-  /* [54] */ MatcherIndex(23),
-  /* [55] */ MatcherIndex(0),
-  /* [56] */ MatcherIndex(1),
-  /* [57] */ MatcherIndex(23),
-  /* [58] */ MatcherIndex(0),
-  /* [59] */ MatcherIndex(4),
-  /* [60] */ MatcherIndex(23),
-  /* [61] */ MatcherIndex(1),
-  /* [62] */ MatcherIndex(0),
-  /* [63] */ MatcherIndex(23),
-  /* [64] */ MatcherIndex(0),
-  /* [65] */ MatcherIndex(9),
-  /* [66] */ MatcherIndex(51),
+  /* [54] */ MatcherIndex(25),
+  /* [55] */ MatcherIndex(2),
+  /* [56] */ MatcherIndex(3),
+  /* [57] */ MatcherIndex(0),
+  /* [58] */ MatcherIndex(25),
+  /* [59] */ MatcherIndex(1),
+  /* [60] */ MatcherIndex(3),
+  /* [61] */ MatcherIndex(0),
+  /* [62] */ MatcherIndex(25),
+  /* [63] */ MatcherIndex(2),
+  /* [64] */ MatcherIndex(1),
+  /* [65] */ MatcherIndex(0),
+  /* [66] */ MatcherIndex(24),
   /* [67] */ MatcherIndex(0),
   /* [68] */ MatcherIndex(1),
-  /* [69] */ MatcherIndex(23),
+  /* [69] */ MatcherIndex(24),
   /* [70] */ MatcherIndex(0),
-  /* [71] */ MatcherIndex(2),
-  /* [72] */ MatcherIndex(49),
-  /* [73] */ MatcherIndex(0),
-  /* [74] */ MatcherIndex(1),
-  /* [75] */ MatcherIndex(42),
+  /* [71] */ MatcherIndex(5),
+  /* [72] */ MatcherIndex(24),
+  /* [73] */ MatcherIndex(1),
+  /* [74] */ MatcherIndex(0),
+  /* [75] */ MatcherIndex(24),
   /* [76] */ MatcherIndex(0),
-  /* [77] */ MatcherIndex(1),
-  /* [78] */ MatcherIndex(43),
+  /* [77] */ MatcherIndex(10),
+  /* [78] */ MatcherIndex(53),
   /* [79] */ MatcherIndex(0),
   /* [80] */ MatcherIndex(1),
-  /* [81] */ MatcherIndex(44),
+  /* [81] */ MatcherIndex(24),
   /* [82] */ MatcherIndex(0),
-  /* [83] */ MatcherIndex(1),
-  /* [84] */ MatcherIndex(45),
+  /* [83] */ MatcherIndex(2),
+  /* [84] */ MatcherIndex(51),
   /* [85] */ MatcherIndex(0),
   /* [86] */ MatcherIndex(1),
-  /* [87] */ MatcherIndex(42),
-  /* [88] */ MatcherIndex(7),
-  /* [89] */ MatcherIndex(13),
-  /* [90] */ MatcherIndex(9),
-  /* [91] */ MatcherIndex(43),
-  /* [92] */ MatcherIndex(7),
-  /* [93] */ MatcherIndex(13),
-  /* [94] */ MatcherIndex(7),
-  /* [95] */ MatcherIndex(44),
-  /* [96] */ MatcherIndex(7),
-  /* [97] */ MatcherIndex(13),
-  /* [98] */ MatcherIndex(8),
-  /* [99] */ MatcherIndex(45),
-  /* [100] */ MatcherIndex(7),
-  /* [101] */ MatcherIndex(13),
-  /* [102] */ MatcherIndex(0),
-  /* [103] */ MatcherIndex(42),
+  /* [87] */ MatcherIndex(44),
+  /* [88] */ MatcherIndex(0),
+  /* [89] */ MatcherIndex(1),
+  /* [90] */ MatcherIndex(45),
+  /* [91] */ MatcherIndex(0),
+  /* [92] */ MatcherIndex(1),
+  /* [93] */ MatcherIndex(46),
+  /* [94] */ MatcherIndex(0),
+  /* [95] */ MatcherIndex(1),
+  /* [96] */ MatcherIndex(47),
+  /* [97] */ MatcherIndex(0),
+  /* [98] */ MatcherIndex(1),
+  /* [99] */ MatcherIndex(44),
+  /* [100] */ MatcherIndex(8),
+  /* [101] */ MatcherIndex(14),
+  /* [102] */ MatcherIndex(8),
+  /* [103] */ MatcherIndex(45),
   /* [104] */ MatcherIndex(8),
-  /* [105] */ MatcherIndex(13),
-  /* [106] */ MatcherIndex(1),
-  /* [107] */ MatcherIndex(43),
+  /* [105] */ MatcherIndex(14),
+  /* [106] */ MatcherIndex(9),
+  /* [107] */ MatcherIndex(46),
   /* [108] */ MatcherIndex(8),
-  /* [109] */ MatcherIndex(13),
-  /* [110] */ MatcherIndex(44),
-  /* [111] */ MatcherIndex(8),
-  /* [112] */ MatcherIndex(13),
-  /* [113] */ MatcherIndex(45),
-  /* [114] */ MatcherIndex(8),
-  /* [115] */ MatcherIndex(13),
-  /* [116] */ MatcherIndex(42),
-  /* [117] */ MatcherIndex(9),
-  /* [118] */ MatcherIndex(13),
-  /* [119] */ MatcherIndex(43),
-  /* [120] */ MatcherIndex(9),
-  /* [121] */ MatcherIndex(13),
-  /* [122] */ MatcherIndex(44),
-  /* [123] */ MatcherIndex(9),
-  /* [124] */ MatcherIndex(13),
-  /* [125] */ MatcherIndex(45),
-  /* [126] */ MatcherIndex(9),
-  /* [127] */ MatcherIndex(13),
-  /* [128] */ MatcherIndex(42),
-  /* [129] */ MatcherIndex(7),
-  /* [130] */ MatcherIndex(12),
-  /* [131] */ MatcherIndex(0),
-  /* [132] */ MatcherIndex(42),
-  /* [133] */ MatcherIndex(8),
-  /* [134] */ MatcherIndex(12),
-  /* [135] */ MatcherIndex(8),
-  /* [136] */ MatcherIndex(42),
-  /* [137] */ MatcherIndex(9),
-  /* [138] */ MatcherIndex(12),
-  /* [139] */ MatcherIndex(9),
-  /* [140] */ MatcherIndex(43),
-  /* [141] */ MatcherIndex(7),
-  /* [142] */ MatcherIndex(12),
-  /* [143] */ MatcherIndex(7),
-  /* [144] */ MatcherIndex(43),
-  /* [145] */ MatcherIndex(8),
-  /* [146] */ MatcherIndex(12),
-  /* [147] */ MatcherIndex(1),
-  /* [148] */ MatcherIndex(43),
-  /* [149] */ MatcherIndex(9),
-  /* [150] */ MatcherIndex(12),
-  /* [151] */ MatcherIndex(44),
-  /* [152] */ MatcherIndex(7),
-  /* [153] */ MatcherIndex(12),
-  /* [154] */ MatcherIndex(44),
-  /* [155] */ MatcherIndex(8),
-  /* [156] */ MatcherIndex(12),
-  /* [157] */ MatcherIndex(44),
-  /* [158] */ MatcherIndex(9),
-  /* [159] */ MatcherIndex(12),
-  /* [160] */ MatcherIndex(45),
-  /* [161] */ MatcherIndex(7),
-  /* [162] */ MatcherIndex(12),
-  /* [163] */ MatcherIndex(45),
-  /* [164] */ MatcherIndex(8),
-  /* [165] */ MatcherIndex(12),
-  /* [166] */ MatcherIndex(45),
-  /* [167] */ MatcherIndex(9),
-  /* [168] */ MatcherIndex(12),
-  /* [169] */ MatcherIndex(23),
-  /* [170] */ MatcherIndex(2),
-  /* [171] */ MatcherIndex(0),
-  /* [172] */ MatcherIndex(23),
-  /* [173] */ MatcherIndex(1),
-  /* [174] */ MatcherIndex(4),
-  /* [175] */ MatcherIndex(23),
-  /* [176] */ MatcherIndex(1),
-  /* [177] */ MatcherIndex(8),
-  /* [178] */ MatcherIndex(50),
-  /* [179] */ MatcherIndex(0),
-  /* [180] */ MatcherIndex(48),
-  /* [181] */ MatcherIndex(0),
-  /* [182] */ MatcherIndex(30),
-  /* [183] */ MatcherIndex(0),
-  /* [184] */ MatcherIndex(11),
-  /* [185] */ MatcherIndex(8),
-  /* [186] */ MatcherIndex(31),
-  /* [187] */ MatcherIndex(0),
-  /* [188] */ MatcherIndex(32),
-  /* [189] */ MatcherIndex(0),
-  /* [190] */ MatcherIndex(33),
-  /* [191] */ MatcherIndex(0),
-  /* [192] */ MatcherIndex(34),
-  /* [193] */ MatcherIndex(0),
-  /* [194] */ MatcherIndex(35),
-  /* [195] */ MatcherIndex(0),
-  /* [196] */ MatcherIndex(36),
-  /* [197] */ MatcherIndex(0),
-  /* [198] */ MatcherIndex(11),
-  /* [199] */ MatcherIndex(7),
-  /* [200] */ MatcherIndex(30),
-  /* [201] */ MatcherIndex(9),
-  /* [202] */ MatcherIndex(31),
-  /* [203] */ MatcherIndex(9),
-  /* [204] */ MatcherIndex(32),
-  /* [205] */ MatcherIndex(9),
-  /* [206] */ MatcherIndex(33),
-  /* [207] */ MatcherIndex(9),
-  /* [208] */ MatcherIndex(34),
-  /* [209] */ MatcherIndex(9),
-  /* [210] */ MatcherIndex(35),
-  /* [211] */ MatcherIndex(9),
-  /* [212] */ MatcherIndex(11),
-  /* [213] */ MatcherIndex(0),
-  /* [214] */ MatcherIndex(11),
-  /* [215] */ MatcherIndex(1),
-  /* [216] */ MatcherIndex(47),
-  /* [217] */ MatcherIndex(0),
-  /* [218] */ MatcherIndex(52),
-  /* [219] */ MatcherIndex(0),
-  /* [220] */ MatcherIndex(14),
-  /* [221] */ MatcherIndex(0),
-  /* [222] */ MatcherIndex(14),
-  /* [223] */ MatcherIndex(9),
-  /* [224] */ MatcherIndex(14),
-  /* [225] */ MatcherIndex(10),
-  /* [226] */ MatcherIndex(15),
-  /* [227] */ MatcherIndex(0),
-  /* [228] */ MatcherIndex(15),
-  /* [229] */ MatcherIndex(9),
-  /* [230] */ MatcherIndex(15),
-  /* [231] */ MatcherIndex(10),
-  /* [232] */ MatcherIndex(16),
-  /* [233] */ MatcherIndex(0),
-  /* [234] */ MatcherIndex(16),
-  /* [235] */ MatcherIndex(9),
-  /* [236] */ MatcherIndex(16),
-  /* [237] */ MatcherIndex(10),
-  /* [238] */ MatcherIndex(17),
-  /* [239] */ MatcherIndex(0),
-  /* [240] */ MatcherIndex(17),
-  /* [241] */ MatcherIndex(9),
-  /* [242] */ MatcherIndex(17),
-  /* [243] */ MatcherIndex(10),
-  /* [244] */ MatcherIndex(18),
-  /* [245] */ MatcherIndex(0),
-  /* [246] */ MatcherIndex(18),
-  /* [247] */ MatcherIndex(9),
-  /* [248] */ MatcherIndex(18),
-  /* [249] */ MatcherIndex(10),
-  /* [250] */ MatcherIndex(19),
-  /* [251] */ MatcherIndex(0),
-  /* [252] */ MatcherIndex(19),
-  /* [253] */ MatcherIndex(9),
-  /* [254] */ MatcherIndex(19),
-  /* [255] */ MatcherIndex(10),
-  /* [256] */ MatcherIndex(20),
-  /* [257] */ MatcherIndex(0),
-  /* [258] */ MatcherIndex(20),
-  /* [259] */ MatcherIndex(9),
-  /* [260] */ MatcherIndex(20),
-  /* [261] */ MatcherIndex(10),
-  /* [262] */ MatcherIndex(21),
-  /* [263] */ MatcherIndex(0),
-  /* [264] */ MatcherIndex(21),
-  /* [265] */ MatcherIndex(9),
-  /* [266] */ MatcherIndex(21),
-  /* [267] */ MatcherIndex(10),
-  /* [268] */ MatcherIndex(22),
-  /* [269] */ MatcherIndex(0),
-  /* [270] */ MatcherIndex(22),
-  /* [271] */ MatcherIndex(9),
-  /* [272] */ MatcherIndex(22),
-  /* [273] */ MatcherIndex(10),
-  /* [274] */ MatcherIndex(60),
-  /* [275] */ MatcherIndex(64),
-  /* [276] */ MatcherIndex(65),
-  /* [277] */ MatcherIndex(54),
-  /* [278] */ MatcherIndex(62),
-  /* [279] */ MatcherIndex(61),
-  /* [280] */ MatcherIndex(37),
-  /* [281] */ MatcherIndex(38),
-  /* [282] */ MatcherIndex(39),
-  /* [283] */ MatcherIndex(40),
-  /* [284] */ MatcherIndex(41),
-  /* [285] */ MatcherIndex(46),
-  /* [286] */ MatcherIndex(28),
-  /* [287] */ MatcherIndex(29),
-  /* [288] */ MatcherIndex(57),
-  /* [289] */ MatcherIndex(58),
-  /* [290] */ MatcherIndex(55),
-  /* [291] */ MatcherIndex(56),
-  /* [292] */ MatcherIndex(59),
-  /* [293] */ MatcherIndex(66),
+  /* [109] */ MatcherIndex(14),
+  /* [110] */ MatcherIndex(0),
+  /* [111] */ MatcherIndex(47),
+  /* [112] */ MatcherIndex(8),
+  /* [113] */ MatcherIndex(14),
+  /* [114] */ MatcherIndex(1),
+  /* [115] */ MatcherIndex(44),
+  /* [116] */ MatcherIndex(9),
+  /* [117] */ MatcherIndex(14),
+  /* [118] */ MatcherIndex(45),
+  /* [119] */ MatcherIndex(9),
+  /* [120] */ MatcherIndex(14),
+  /* [121] */ MatcherIndex(46),
+  /* [122] */ MatcherIndex(9),
+  /* [123] */ MatcherIndex(14),
+  /* [124] */ MatcherIndex(47),
+  /* [125] */ MatcherIndex(9),
+  /* [126] */ MatcherIndex(14),
+  /* [127] */ MatcherIndex(44),
+  /* [128] */ MatcherIndex(10),
+  /* [129] */ MatcherIndex(14),
+  /* [130] */ MatcherIndex(45),
+  /* [131] */ MatcherIndex(10),
+  /* [132] */ MatcherIndex(14),
+  /* [133] */ MatcherIndex(46),
+  /* [134] */ MatcherIndex(10),
+  /* [135] */ MatcherIndex(14),
+  /* [136] */ MatcherIndex(47),
+  /* [137] */ MatcherIndex(10),
+  /* [138] */ MatcherIndex(14),
+  /* [139] */ MatcherIndex(44),
+  /* [140] */ MatcherIndex(8),
+  /* [141] */ MatcherIndex(13),
+  /* [142] */ MatcherIndex(0),
+  /* [143] */ MatcherIndex(44),
+  /* [144] */ MatcherIndex(9),
+  /* [145] */ MatcherIndex(13),
+  /* [146] */ MatcherIndex(9),
+  /* [147] */ MatcherIndex(44),
+  /* [148] */ MatcherIndex(10),
+  /* [149] */ MatcherIndex(13),
+  /* [150] */ MatcherIndex(10),
+  /* [151] */ MatcherIndex(45),
+  /* [152] */ MatcherIndex(8),
+  /* [153] */ MatcherIndex(13),
+  /* [154] */ MatcherIndex(8),
+  /* [155] */ MatcherIndex(45),
+  /* [156] */ MatcherIndex(9),
+  /* [157] */ MatcherIndex(13),
+  /* [158] */ MatcherIndex(1),
+  /* [159] */ MatcherIndex(45),
+  /* [160] */ MatcherIndex(10),
+  /* [161] */ MatcherIndex(13),
+  /* [162] */ MatcherIndex(46),
+  /* [163] */ MatcherIndex(8),
+  /* [164] */ MatcherIndex(13),
+  /* [165] */ MatcherIndex(46),
+  /* [166] */ MatcherIndex(9),
+  /* [167] */ MatcherIndex(13),
+  /* [168] */ MatcherIndex(46),
+  /* [169] */ MatcherIndex(10),
+  /* [170] */ MatcherIndex(13),
+  /* [171] */ MatcherIndex(47),
+  /* [172] */ MatcherIndex(8),
+  /* [173] */ MatcherIndex(13),
+  /* [174] */ MatcherIndex(47),
+  /* [175] */ MatcherIndex(9),
+  /* [176] */ MatcherIndex(13),
+  /* [177] */ MatcherIndex(47),
+  /* [178] */ MatcherIndex(10),
+  /* [179] */ MatcherIndex(13),
+  /* [180] */ MatcherIndex(24),
+  /* [181] */ MatcherIndex(2),
+  /* [182] */ MatcherIndex(0),
+  /* [183] */ MatcherIndex(24),
+  /* [184] */ MatcherIndex(1),
+  /* [185] */ MatcherIndex(5),
+  /* [186] */ MatcherIndex(24),
+  /* [187] */ MatcherIndex(1),
+  /* [188] */ MatcherIndex(9),
+  /* [189] */ MatcherIndex(52),
+  /* [190] */ MatcherIndex(0),
+  /* [191] */ MatcherIndex(50),
+  /* [192] */ MatcherIndex(0),
+  /* [193] */ MatcherIndex(32),
+  /* [194] */ MatcherIndex(0),
+  /* [195] */ MatcherIndex(12),
+  /* [196] */ MatcherIndex(9),
+  /* [197] */ MatcherIndex(33),
+  /* [198] */ MatcherIndex(0),
+  /* [199] */ MatcherIndex(34),
+  /* [200] */ MatcherIndex(0),
+  /* [201] */ MatcherIndex(35),
+  /* [202] */ MatcherIndex(0),
+  /* [203] */ MatcherIndex(36),
+  /* [204] */ MatcherIndex(0),
+  /* [205] */ MatcherIndex(37),
+  /* [206] */ MatcherIndex(0),
+  /* [207] */ MatcherIndex(38),
+  /* [208] */ MatcherIndex(0),
+  /* [209] */ MatcherIndex(12),
+  /* [210] */ MatcherIndex(8),
+  /* [211] */ MatcherIndex(32),
+  /* [212] */ MatcherIndex(10),
+  /* [213] */ MatcherIndex(33),
+  /* [214] */ MatcherIndex(10),
+  /* [215] */ MatcherIndex(34),
+  /* [216] */ MatcherIndex(10),
+  /* [217] */ MatcherIndex(35),
+  /* [218] */ MatcherIndex(10),
+  /* [219] */ MatcherIndex(36),
+  /* [220] */ MatcherIndex(10),
+  /* [221] */ MatcherIndex(37),
+  /* [222] */ MatcherIndex(10),
+  /* [223] */ MatcherIndex(12),
+  /* [224] */ MatcherIndex(0),
+  /* [225] */ MatcherIndex(12),
+  /* [226] */ MatcherIndex(1),
+  /* [227] */ MatcherIndex(49),
+  /* [228] */ MatcherIndex(0),
+  /* [229] */ MatcherIndex(54),
+  /* [230] */ MatcherIndex(0),
+  /* [231] */ MatcherIndex(15),
+  /* [232] */ MatcherIndex(0),
+  /* [233] */ MatcherIndex(15),
+  /* [234] */ MatcherIndex(10),
+  /* [235] */ MatcherIndex(15),
+  /* [236] */ MatcherIndex(11),
+  /* [237] */ MatcherIndex(16),
+  /* [238] */ MatcherIndex(0),
+  /* [239] */ MatcherIndex(16),
+  /* [240] */ MatcherIndex(10),
+  /* [241] */ MatcherIndex(16),
+  /* [242] */ MatcherIndex(11),
+  /* [243] */ MatcherIndex(17),
+  /* [244] */ MatcherIndex(0),
+  /* [245] */ MatcherIndex(17),
+  /* [246] */ MatcherIndex(10),
+  /* [247] */ MatcherIndex(17),
+  /* [248] */ MatcherIndex(11),
+  /* [249] */ MatcherIndex(18),
+  /* [250] */ MatcherIndex(0),
+  /* [251] */ MatcherIndex(18),
+  /* [252] */ MatcherIndex(10),
+  /* [253] */ MatcherIndex(18),
+  /* [254] */ MatcherIndex(11),
+  /* [255] */ MatcherIndex(19),
+  /* [256] */ MatcherIndex(0),
+  /* [257] */ MatcherIndex(19),
+  /* [258] */ MatcherIndex(10),
+  /* [259] */ MatcherIndex(19),
+  /* [260] */ MatcherIndex(11),
+  /* [261] */ MatcherIndex(20),
+  /* [262] */ MatcherIndex(0),
+  /* [263] */ MatcherIndex(20),
+  /* [264] */ MatcherIndex(10),
+  /* [265] */ MatcherIndex(20),
+  /* [266] */ MatcherIndex(11),
+  /* [267] */ MatcherIndex(21),
+  /* [268] */ MatcherIndex(0),
+  /* [269] */ MatcherIndex(21),
+  /* [270] */ MatcherIndex(10),
+  /* [271] */ MatcherIndex(21),
+  /* [272] */ MatcherIndex(11),
+  /* [273] */ MatcherIndex(22),
+  /* [274] */ MatcherIndex(0),
+  /* [275] */ MatcherIndex(22),
+  /* [276] */ MatcherIndex(10),
+  /* [277] */ MatcherIndex(22),
+  /* [278] */ MatcherIndex(11),
+  /* [279] */ MatcherIndex(23),
+  /* [280] */ MatcherIndex(0),
+  /* [281] */ MatcherIndex(23),
+  /* [282] */ MatcherIndex(10),
+  /* [283] */ MatcherIndex(23),
+  /* [284] */ MatcherIndex(11),
+  /* [285] */ MatcherIndex(62),
+  /* [286] */ MatcherIndex(66),
+  /* [287] */ MatcherIndex(67),
+  /* [288] */ MatcherIndex(56),
+  /* [289] */ MatcherIndex(64),
+  /* [290] */ MatcherIndex(63),
+  /* [291] */ MatcherIndex(39),
+  /* [292] */ MatcherIndex(40),
+  /* [293] */ MatcherIndex(41),
+  /* [294] */ MatcherIndex(42),
+  /* [295] */ MatcherIndex(43),
+  /* [296] */ MatcherIndex(48),
+  /* [297] */ MatcherIndex(30),
+  /* [298] */ MatcherIndex(31),
+  /* [299] */ MatcherIndex(59),
+  /* [300] */ MatcherIndex(60),
+  /* [301] */ MatcherIndex(57),
+  /* [302] */ MatcherIndex(58),
+  /* [303] */ MatcherIndex(61),
+  /* [304] */ MatcherIndex(68),
 };
 
 static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -1965,1892 +2005,1892 @@
   {
     /* [0] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* matcher_indices */ MatcherIndicesIndex(12),
   },
   {
     /* [1] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [2] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [3] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [4] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [5] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [6] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [7] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [8] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [9] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [10] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [11] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [12] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [13] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [14] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [15] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [16] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [17] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [18] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [19] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(204),
+    /* matcher_indices */ MatcherIndicesIndex(215),
   },
   {
     /* [20] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [21] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [22] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [23] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [24] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [25] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [26] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [27] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(188),
+    /* matcher_indices */ MatcherIndicesIndex(199),
   },
   {
     /* [28] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [29] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [30] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(15),
+    /* matcher_indices */ MatcherIndicesIndex(21),
   },
   {
     /* [31] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [32] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(281),
+    /* matcher_indices */ MatcherIndicesIndex(292),
   },
   {
     /* [33] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* matcher_indices */ MatcherIndicesIndex(298),
   },
   {
     /* [34] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [35] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [36] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [37] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [38] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(204),
+    /* matcher_indices */ MatcherIndicesIndex(215),
   },
   {
     /* [39] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [40] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [41] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [42] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [43] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [44] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(202),
+    /* matcher_indices */ MatcherIndicesIndex(213),
   },
   {
     /* [45] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [46] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [47] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [48] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [49] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [50] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(206),
+    /* matcher_indices */ MatcherIndicesIndex(217),
   },
   {
     /* [51] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [52] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [53] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [54] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [55] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* matcher_indices */ MatcherIndicesIndex(153),
   },
   {
     /* [56] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(210),
+    /* matcher_indices */ MatcherIndicesIndex(221),
   },
   {
     /* [57] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [58] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [59] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [60] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [61] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [62] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(204),
+    /* matcher_indices */ MatcherIndicesIndex(215),
   },
   {
     /* [63] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [64] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [65] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [66] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [67] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [68] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(281),
+    /* matcher_indices */ MatcherIndicesIndex(292),
   },
   {
     /* [69] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [70] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [71] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [72] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [73] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [74] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [75] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(186),
+    /* matcher_indices */ MatcherIndicesIndex(197),
   },
   {
     /* [76] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [77] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [78] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [79] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [80] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(194),
+    /* matcher_indices */ MatcherIndicesIndex(205),
   },
   {
     /* [81] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [82] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [83] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(15),
+    /* matcher_indices */ MatcherIndicesIndex(21),
   },
   {
     /* [84] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(281),
+    /* matcher_indices */ MatcherIndicesIndex(292),
   },
   {
     /* [85] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [86] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [87] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [88] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [89] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(280),
+    /* matcher_indices */ MatcherIndicesIndex(291),
   },
   {
     /* [90] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* matcher_indices */ MatcherIndicesIndex(298),
   },
   {
     /* [91] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [92] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [93] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [94] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(283),
+    /* matcher_indices */ MatcherIndicesIndex(294),
   },
   {
     /* [95] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* matcher_indices */ MatcherIndicesIndex(298),
   },
   {
     /* [96] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [97] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [98] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [99] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(204),
+    /* matcher_indices */ MatcherIndicesIndex(215),
   },
   {
     /* [100] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [101] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [102] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [103] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [104] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(202),
+    /* matcher_indices */ MatcherIndicesIndex(213),
   },
   {
     /* [105] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [106] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [107] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [108] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [109] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(206),
+    /* matcher_indices */ MatcherIndicesIndex(217),
   },
   {
     /* [110] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [111] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [112] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [113] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* matcher_indices */ MatcherIndicesIndex(153),
   },
   {
     /* [114] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(210),
+    /* matcher_indices */ MatcherIndicesIndex(221),
   },
   {
     /* [115] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [116] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [117] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [118] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [119] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(208),
+    /* matcher_indices */ MatcherIndicesIndex(219),
   },
   {
     /* [120] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [121] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [122] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [123] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [124] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(202),
+    /* matcher_indices */ MatcherIndicesIndex(213),
   },
   {
     /* [125] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [126] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [127] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [128] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [129] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(206),
+    /* matcher_indices */ MatcherIndicesIndex(217),
   },
   {
     /* [130] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [131] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [132] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [133] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* matcher_indices */ MatcherIndicesIndex(153),
   },
   {
     /* [134] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(210),
+    /* matcher_indices */ MatcherIndicesIndex(221),
   },
   {
     /* [135] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [136] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [137] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [138] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [139] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(280),
+    /* matcher_indices */ MatcherIndicesIndex(291),
   },
   {
     /* [140] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [141] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [142] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [143] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [144] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(283),
+    /* matcher_indices */ MatcherIndicesIndex(294),
   },
   {
     /* [145] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [146] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [147] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [148] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [149] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* matcher_indices */ MatcherIndicesIndex(0),
   },
   {
     /* [150] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [151] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(18),
   },
   {
     /* [152] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(24),
   },
   {
     /* [153] */
-    /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [154] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(192),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [155] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [156] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [157] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(280),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [158] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [159] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(203),
   },
   {
     /* [160] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [161] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(282),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [162] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(291),
   },
   {
     /* [163] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [164] */
-    /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [165] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(202),
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [166] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(293),
   },
   {
     /* [167] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(298),
   },
   {
     /* [168] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [169] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(206),
+    /* usage */ core::ParameterUsage::kDepthRef,
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [170] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(213),
   },
   {
     /* [171] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [172] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
     /* [173] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(208),
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(209),
   },
   {
     /* [174] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(217),
   },
   {
     /* [175] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [176] */
-    /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [177] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(208),
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(153),
   },
   {
     /* [178] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(219),
   },
   {
     /* [179] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [180] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [181] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(282),
+    /* usage */ core::ParameterUsage::kBias,
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [182] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(219),
   },
   {
     /* [183] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(138),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [184] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [185] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(95),
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [186] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(293),
   },
   {
     /* [187] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
     /* [188] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(89),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(149),
   },
   {
     /* [189] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(110),
-  },
-  {
-    /* [190] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [191] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [192] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(93),
-  },
-  {
-    /* [193] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(122),
-  },
-  {
-    /* [194] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [195] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [196] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(97),
-  },
-  {
-    /* [197] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(188),
-  },
-  {
-    /* [198] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(214),
-  },
-  {
-    /* [199] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [200] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(44),
-  },
-  {
-    /* [201] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(281),
-  },
-  {
-    /* [202] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [203] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [204] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [205] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [206] */
-    /* usage */ core::ParameterUsage::kY,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [207] */
-    /* usage */ core::ParameterUsage::kZ,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [208] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [209] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [210] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [211] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [212] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [213] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [214] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [215] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [216] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [217] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [218] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [219] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [220] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [221] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
-  },
-  {
-    /* [222] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
-  },
-  {
-    /* [223] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
-  },
-  {
-    /* [224] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(12),
-  },
-  {
-    /* [225] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(12),
-  },
-  {
-    /* [226] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
-  },
-  {
-    /* [227] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
-  },
-  {
-    /* [228] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
-  },
-  {
-    /* [229] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [230] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [231] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [232] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(12),
-  },
-  {
-    /* [233] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
-  },
-  {
-    /* [234] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
-  },
-  {
-    /* [235] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(57),
-  },
-  {
-    /* [236] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(57),
-  },
-  {
-    /* [237] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(200),
-  },
-  {
-    /* [238] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
-  },
-  {
-    /* [239] */
-    /* usage */ core::ParameterUsage::kCoords,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [240] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(285),
-  },
-  {
-    /* [241] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(286),
-  },
-  {
-    /* [242] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(9),
-  },
-  {
-    /* [243] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(87),
-  },
-  {
-    /* [244] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [245] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(89),
-  },
-  {
-    /* [246] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(91),
-  },
-  {
-    /* [247] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [248] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(89),
-  },
-  {
-    /* [249] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(99),
-  },
-  {
-    /* [250] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [251] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(89),
-  },
-  {
-    /* [252] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(103),
-  },
-  {
-    /* [253] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [254] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(93),
-  },
-  {
-    /* [255] */
+    /* [190] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(107),
   },
   {
-    /* [256] */
+    /* [191] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
-    /* [257] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(93),
-  },
-  {
-    /* [258] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(113),
-  },
-  {
-    /* [259] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [260] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(93),
-  },
-  {
-    /* [261] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(116),
-  },
-  {
-    /* [262] */
-    /* usage */ core::ParameterUsage::kCoords,
+    /* [192] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
-    /* [263] */
+    /* [193] */
     /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(97),
+    /* matcher_indices */ MatcherIndicesIndex(5),
   },
   {
-    /* [264] */
+    /* [194] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(119),
+    /* matcher_indices */ MatcherIndicesIndex(121),
   },
   {
-    /* [265] */
+    /* [195] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
-    /* [266] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(97),
-  },
-  {
-    /* [267] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(125),
-  },
-  {
-    /* [268] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [269] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(97),
-  },
-  {
-    /* [270] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(182),
-  },
-  {
-    /* [271] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [272] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [273] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(186),
-  },
-  {
-    /* [274] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(214),
-  },
-  {
-    /* [275] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [276] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(190),
-  },
-  {
-    /* [277] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(146),
-  },
-  {
-    /* [278] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [279] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(196),
-  },
-  {
-    /* [280] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(214),
-  },
-  {
-    /* [281] */
-    /* usage */ core::ParameterUsage::kSampleIndex,
-    /* matcher_indices */ MatcherIndicesIndex(15),
-  },
-  {
-    /* [282] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(280),
-  },
-  {
-    /* [283] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [284] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [285] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(284),
-  },
-  {
-    /* [286] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [287] */
-    /* usage */ core::ParameterUsage::kSampleIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [288] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(151),
-  },
-  {
-    /* [289] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [290] */
+    /* [196] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [291] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(154),
-  },
-  {
-    /* [292] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [293] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [294] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(157),
-  },
-  {
-    /* [295] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [296] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [297] */
-    /* usage */ core::ParameterUsage::kXy,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [298] */
-    /* usage */ core::ParameterUsage::kZ,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
-    /* [299] */
-    /* usage */ core::ParameterUsage::kW,
+    /* [197] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(101),
+  },
+  {
+    /* [198] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(133),
+  },
+  {
+    /* [199] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [200] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
-    /* [300] */
+    /* [201] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [202] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(199),
+  },
+  {
+    /* [203] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(225),
+  },
+  {
+    /* [204] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [205] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(22),
+  },
+  {
+    /* [206] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(292),
+  },
+  {
+    /* [207] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [208] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [209] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [210] */
     /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [301] */
-    /* usage */ core::ParameterUsage::kYz,
-    /* matcher_indices */ MatcherIndicesIndex(212),
-  },
-  {
-    /* [302] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [303] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [304] */
+    /* [211] */
     /* usage */ core::ParameterUsage::kY,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [305] */
-    /* usage */ core::ParameterUsage::kZw,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* [212] */
+    /* usage */ core::ParameterUsage::kZ,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [306] */
+    /* [213] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [214] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [215] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [216] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [217] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [218] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [219] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [220] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [221] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [222] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [223] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [224] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [225] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [226] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(72),
+  },
+  {
+    /* [227] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(72),
+  },
+  {
+    /* [228] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(72),
+  },
+  {
+    /* [229] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(24),
+  },
+  {
+    /* [230] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(24),
+  },
+  {
+    /* [231] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [232] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [233] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [234] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
-    /* [307] */
+    /* [235] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [308] */
+    /* [236] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [309] */
+    /* [237] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(24),
+  },
+  {
+    /* [238] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [239] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [240] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(69),
   },
   {
-    /* [310] */
+    /* [241] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(69),
+  },
+  {
+    /* [242] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(182),
+    /* matcher_indices */ MatcherIndicesIndex(211),
   },
   {
-    /* [311] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* [243] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
   },
   {
-    /* [312] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(186),
-  },
-  {
-    /* [313] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [314] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(188),
-  },
-  {
-    /* [315] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [316] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(190),
-  },
-  {
-    /* [317] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [318] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(192),
-  },
-  {
-    /* [319] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [320] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(194),
-  },
-  {
-    /* [321] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [322] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(280),
-  },
-  {
-    /* [323] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [324] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(281),
-  },
-  {
-    /* [325] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [326] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(282),
-  },
-  {
-    /* [327] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [328] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(283),
-  },
-  {
-    /* [329] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [330] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(285),
-  },
-  {
-    /* [331] */
+    /* [244] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
-    /* [332] */
+    /* [245] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(128),
+    /* matcher_indices */ MatcherIndicesIndex(296),
   },
   {
-    /* [333] */
+    /* [246] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(297),
+  },
+  {
+    /* [247] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(16),
   },
   {
-    /* [334] */
+    /* [248] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(132),
+    /* matcher_indices */ MatcherIndicesIndex(99),
   },
   {
-    /* [335] */
+    /* [249] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [336] */
+    /* [250] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [251] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(103),
+  },
+  {
+    /* [252] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [253] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [254] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(111),
+  },
+  {
+    /* [255] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [256] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [257] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [258] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [259] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(101),
+  },
+  {
+    /* [260] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(118),
+  },
+  {
+    /* [261] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [262] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(101),
+  },
+  {
+    /* [263] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(124),
+  },
+  {
+    /* [264] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [265] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(101),
+  },
+  {
+    /* [266] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(127),
+  },
+  {
+    /* [267] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [268] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [269] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(130),
+  },
+  {
+    /* [270] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [271] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [272] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(136),
   },
   {
-    /* [337] */
+    /* [273] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [274] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [275] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(193),
+  },
+  {
+    /* [276] */
     /* usage */ core::ParameterUsage::kCoords,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
+    /* [277] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [278] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(197),
+  },
+  {
+    /* [279] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(225),
+  },
+  {
+    /* [280] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [281] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(201),
+  },
+  {
+    /* [282] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(157),
+  },
+  {
+    /* [283] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [284] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(207),
+  },
+  {
+    /* [285] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(225),
+  },
+  {
+    /* [286] */
+    /* usage */ core::ParameterUsage::kSampleIndex,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [287] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(291),
+  },
+  {
+    /* [288] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [289] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [290] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(295),
+  },
+  {
+    /* [291] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [292] */
+    /* usage */ core::ParameterUsage::kSampleIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [293] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(162),
+  },
+  {
+    /* [294] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [295] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [296] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(165),
+  },
+  {
+    /* [297] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [298] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [299] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(168),
+  },
+  {
+    /* [300] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [301] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [302] */
+    /* usage */ core::ParameterUsage::kXy,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [303] */
+    /* usage */ core::ParameterUsage::kZ,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [304] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [305] */
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [306] */
+    /* usage */ core::ParameterUsage::kYz,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [307] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [308] */
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [309] */
+    /* usage */ core::ParameterUsage::kY,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [310] */
+    /* usage */ core::ParameterUsage::kZw,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [311] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [312] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [313] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [314] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(81),
+  },
+  {
+    /* [315] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(193),
+  },
+  {
+    /* [316] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [317] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(197),
+  },
+  {
+    /* [318] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [319] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(199),
+  },
+  {
+    /* [320] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [321] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(201),
+  },
+  {
+    /* [322] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [323] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(203),
+  },
+  {
+    /* [324] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [325] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(205),
+  },
+  {
+    /* [326] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [327] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(291),
+  },
+  {
+    /* [328] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [329] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(292),
+  },
+  {
+    /* [330] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [331] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(293),
+  },
+  {
+    /* [332] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [333] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(294),
+  },
+  {
+    /* [334] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [335] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(296),
+  },
+  {
+    /* [336] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
+  },
+  {
+    /* [337] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(139),
+  },
+  {
     /* [338] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(140),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [339] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(143),
   },
   {
     /* [340] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(144),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [341] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(147),
   },
   {
     /* [342] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [343] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(151),
   },
   {
     /* [344] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(160),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
     /* [345] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(155),
   },
   {
     /* [346] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(163),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
     /* [347] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(159),
   },
   {
     /* [348] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(166),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
     /* [349] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(171),
   },
   {
     /* [350] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [351] */
-    /* usage */ core::ParameterUsage::kSourceLaneIndex,
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(174),
   },
   {
     /* [352] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [353] */
-    /* usage */ core::ParameterUsage::kSourceLaneIndex,
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(177),
   },
   {
     /* [354] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [355] */
-    /* usage */ core::ParameterUsage::kMask,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [356] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* usage */ core::ParameterUsage::kSourceLaneIndex,
+    /* matcher_indices */ MatcherIndicesIndex(287),
   },
   {
     /* [357] */
-    /* usage */ core::ParameterUsage::kMask,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [358] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kSourceLaneIndex,
+    /* matcher_indices */ MatcherIndicesIndex(287),
   },
   {
     /* [359] */
-    /* usage */ core::ParameterUsage::kDelta,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [360] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* usage */ core::ParameterUsage::kMask,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [361] */
-    /* usage */ core::ParameterUsage::kDelta,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [362] */
-    /* usage */ core::ParameterUsage::kE,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kMask,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [363] */
-    /* usage */ core::ParameterUsage::kId,
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [364] */
-    /* usage */ core::ParameterUsage::kE,
-    /* matcher_indices */ MatcherIndicesIndex(54),
+    /* usage */ core::ParameterUsage::kDelta,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [365] */
-    /* usage */ core::ParameterUsage::kId,
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [366] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
+    /* usage */ core::ParameterUsage::kDelta,
+    /* matcher_indices */ MatcherIndicesIndex(106),
   },
   {
     /* [367] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kE,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [368] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
+    /* usage */ core::ParameterUsage::kId,
+    /* matcher_indices */ MatcherIndicesIndex(287),
   },
   {
     /* [369] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(175),
+    /* usage */ core::ParameterUsage::kE,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [370] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(38),
+    /* usage */ core::ParameterUsage::kId,
+    /* matcher_indices */ MatcherIndicesIndex(287),
   },
   {
     /* [371] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(38),
+    /* matcher_indices */ MatcherIndicesIndex(72),
   },
   {
     /* [372] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [373] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(38),
+    /* matcher_indices */ MatcherIndicesIndex(72),
   },
   {
     /* [374] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(60),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
     /* [375] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(169),
+    /* matcher_indices */ MatcherIndicesIndex(50),
   },
   {
     /* [376] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(38),
+    /* matcher_indices */ MatcherIndicesIndex(50),
   },
   {
     /* [377] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(46),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [378] */
@@ -3859,263 +3899,288 @@
   },
   {
     /* [379] */
-    /* usage */ core::ParameterUsage::kXy,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(72),
   },
   {
     /* [380] */
-    /* usage */ core::ParameterUsage::kZw,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(180),
   },
   {
     /* [381] */
-    /* usage */ core::ParameterUsage::kXyz,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(50),
   },
   {
     /* [382] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(58),
   },
   {
     /* [383] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
   },
   {
     /* [384] */
-    /* usage */ core::ParameterUsage::kZyw,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* usage */ core::ParameterUsage::kXy,
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
     /* [385] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(0),
+    /* usage */ core::ParameterUsage::kZw,
+    /* matcher_indices */ MatcherIndicesIndex(223),
   },
   {
     /* [386] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(26),
+    /* usage */ core::ParameterUsage::kXyz,
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [387] */
-    /* usage */ core::ParameterUsage::kNone,
+    /* usage */ core::ParameterUsage::kW,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [388] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(63),
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [389] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* usage */ core::ParameterUsage::kZyw,
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [390] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(89),
+    /* matcher_indices */ MatcherIndicesIndex(7),
   },
   {
     /* [391] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(93),
+    /* matcher_indices */ MatcherIndicesIndex(38),
   },
   {
     /* [392] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(97),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [393] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(34),
-  },
-  {
-    /* [394] */
-    /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(75),
   },
   {
+    /* [394] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(16),
+  },
+  {
     /* [395] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(78),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(5),
   },
   {
     /* [396] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(81),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(101),
   },
   {
     /* [397] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(84),
-  },
-  {
-    /* [398] */
-    /* usage */ core::ParameterUsage::kInputAttachment,
-    /* matcher_indices */ MatcherIndicesIndex(216),
-  },
-  {
-    /* [399] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(88),
-  },
-  {
-    /* [400] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(225),
-  },
-  {
-    /* [401] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(214),
-  },
-  {
-    /* [402] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(146),
-  },
-  {
-    /* [403] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(105),
   },
   {
+    /* [398] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(46),
+  },
+  {
+    /* [399] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(87),
+  },
+  {
+    /* [400] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(90),
+  },
+  {
+    /* [401] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(93),
+  },
+  {
+    /* [402] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(96),
+  },
+  {
+    /* [403] */
+    /* usage */ core::ParameterUsage::kInputAttachment,
+    /* matcher_indices */ MatcherIndicesIndex(227),
+  },
+  {
     /* [404] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(220),
+    /* matcher_indices */ MatcherIndicesIndex(100),
   },
   {
     /* [405] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(222),
+    /* matcher_indices */ MatcherIndicesIndex(236),
   },
   {
     /* [406] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(224),
+    /* matcher_indices */ MatcherIndicesIndex(225),
   },
   {
     /* [407] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(226),
+    /* matcher_indices */ MatcherIndicesIndex(157),
   },
   {
     /* [408] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(228),
+    /* matcher_indices */ MatcherIndicesIndex(113),
   },
   {
     /* [409] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(230),
+    /* matcher_indices */ MatcherIndicesIndex(231),
   },
   {
     /* [410] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(232),
+    /* matcher_indices */ MatcherIndicesIndex(233),
   },
   {
     /* [411] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(234),
+    /* matcher_indices */ MatcherIndicesIndex(235),
   },
   {
     /* [412] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(236),
+    /* matcher_indices */ MatcherIndicesIndex(237),
   },
   {
     /* [413] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(238),
+    /* matcher_indices */ MatcherIndicesIndex(239),
   },
   {
     /* [414] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(240),
+    /* matcher_indices */ MatcherIndicesIndex(241),
   },
   {
     /* [415] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(242),
+    /* matcher_indices */ MatcherIndicesIndex(243),
   },
   {
     /* [416] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(244),
+    /* matcher_indices */ MatcherIndicesIndex(245),
   },
   {
     /* [417] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(246),
+    /* matcher_indices */ MatcherIndicesIndex(247),
   },
   {
     /* [418] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(248),
+    /* matcher_indices */ MatcherIndicesIndex(249),
   },
   {
     /* [419] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(250),
+    /* matcher_indices */ MatcherIndicesIndex(251),
   },
   {
     /* [420] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(252),
+    /* matcher_indices */ MatcherIndicesIndex(253),
   },
   {
     /* [421] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(254),
+    /* matcher_indices */ MatcherIndicesIndex(255),
   },
   {
     /* [422] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(256),
+    /* matcher_indices */ MatcherIndicesIndex(257),
   },
   {
     /* [423] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(259),
   },
   {
     /* [424] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(260),
+    /* matcher_indices */ MatcherIndicesIndex(261),
   },
   {
     /* [425] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(262),
+    /* matcher_indices */ MatcherIndicesIndex(263),
   },
   {
     /* [426] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(264),
+    /* matcher_indices */ MatcherIndicesIndex(265),
   },
   {
     /* [427] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(266),
+    /* matcher_indices */ MatcherIndicesIndex(267),
   },
   {
     /* [428] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(268),
+    /* matcher_indices */ MatcherIndicesIndex(269),
   },
   {
     /* [429] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(270),
+    /* matcher_indices */ MatcherIndicesIndex(271),
   },
   {
     /* [430] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(272),
+    /* matcher_indices */ MatcherIndicesIndex(273),
+  },
+  {
+    /* [431] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(275),
+  },
+  {
+    /* [432] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(277),
+  },
+  {
+    /* [433] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(279),
+  },
+  {
+    /* [434] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(281),
+  },
+  {
+    /* [435] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(283),
   },
 };
 
@@ -4126,277 +4191,277 @@
   {
     /* [0] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(279),
+    /* matcher_indices */ MatcherIndicesIndex(304),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [1] */
     /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [2] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [3] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [4] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(275),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [5] */
     /* name */ "K",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [6] */
+    /* [3] */
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(285),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [4] */
     /* name */ "C",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [7] */
+    /* [5] */
     /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [8] */
-    /* name */ "N",
+    /* [6] */
+    /* name */ "AC",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [9] */
+    /* [7] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(275),
+    /* matcher_indices */ MatcherIndicesIndex(290),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [8] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [9] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(287),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [10] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(88),
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(287),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [11] */
-    /* name */ "M",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [12] */
-    /* name */ "N",
+    /* name */ "K",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [13] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(275),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [14] */
-    /* name */ "N",
+    /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [15] */
-    /* name */ "M",
+    /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [16] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(279),
+    /* matcher_indices */ MatcherIndicesIndex(286),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [17] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(100),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [18] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "M",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [19] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(279),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [20] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(286),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [21] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [22] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(275),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "M",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [23] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(290),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [24] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [25] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(293),
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(287),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [26] */
-    /* name */ "K",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(290),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [27] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [28] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(293),
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(287),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [29] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(286),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [30] */
-    /* name */ "K",
+    /* name */ "C",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [31] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(293),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [32] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [33] */
     /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
+    /* [32] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(304),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [33] */
+    /* name */ "K",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
     /* [34] */
-    /* name */ "N",
+    /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [35] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(274),
+    /* matcher_indices */ MatcherIndicesIndex(304),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [36] */
-    /* name */ "N",
+    /* name */ "C",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [37] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [38] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(226),
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [39] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* matcher_indices */ MatcherIndicesIndex(285),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [40] */
-    /* name */ "A",
+    /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [41] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(277),
+    /* matcher_indices */ MatcherIndicesIndex(287),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [42] */
-    /* name */ "N",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(1),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [43] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(277),
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [44] */
-    /* name */ "N",
+    /* name */ "A",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [45] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(278),
+    /* matcher_indices */ MatcherIndicesIndex(288),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -4408,127 +4473,151 @@
   {
     /* [47] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(279),
+    /* matcher_indices */ MatcherIndicesIndex(288),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [48] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(276),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [49] */
-    /* name */ "F",
+    /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
+    /* [49] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(289),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
     /* [50] */
-    /* name */ "A",
+    /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [51] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* matcher_indices */ MatcherIndicesIndex(290),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [52] */
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [53] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [54] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [55] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(287),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [56] */
     /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [53] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(10),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [54] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(290),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [55] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(225),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [56] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(291),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
     /* [57] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(88),
+    /* matcher_indices */ MatcherIndicesIndex(6),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [58] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(288),
+    /* matcher_indices */ MatcherIndicesIndex(301),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [59] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(236),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [60] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(289),
+    /* matcher_indices */ MatcherIndicesIndex(302),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [61] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(12),
+    /* matcher_indices */ MatcherIndicesIndex(100),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [62] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(292),
+    /* matcher_indices */ MatcherIndicesIndex(299),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [63] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(288),
+    /* matcher_indices */ MatcherIndicesIndex(106),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [64] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(289),
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(300),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [65] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(290),
+    /* matcher_indices */ MatcherIndicesIndex(24),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [66] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(291),
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(303),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [67] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(292),
+    /* matcher_indices */ MatcherIndicesIndex(299),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [68] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(300),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [69] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(301),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [70] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(302),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [71] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(303),
     /* kind */ TemplateInfo::Kind::kType,
   },
 };
@@ -4662,9 +4751,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4673,9 +4762,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(310),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(315),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4684,9 +4773,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(75),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4695,9 +4784,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(312),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(317),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4706,9 +4795,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4717,9 +4806,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(314),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(319),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4728,9 +4817,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4739,9 +4828,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(316),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(321),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4750,9 +4839,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(154),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(159),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4761,9 +4850,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(318),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(323),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4772,9 +4861,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4783,9 +4872,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(320),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(325),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4794,9 +4883,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4807,7 +4896,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4816,9 +4905,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
-    /* parameters */ ParameterIndex(322),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(327),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4829,7 +4918,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4838,9 +4927,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
-    /* parameters */ ParameterIndex(324),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(329),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4850,8 +4939,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4860,9 +4949,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
-    /* parameters */ ParameterIndex(326),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(331),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4873,7 +4962,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4882,9 +4971,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
-    /* parameters */ ParameterIndex(328),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(333),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4894,8 +4983,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4904,9 +4993,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(394),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(399),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4915,9 +5004,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(395),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(400),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4926,9 +5015,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(396),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(401),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4937,9 +5026,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(397),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(402),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4949,8 +5038,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(240),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* parameters */ ParameterIndex(245),
+    /* return_matcher_indices */ MatcherIndicesIndex(195),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4959,9 +5048,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(16),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4970,9 +5059,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(16),
-    /* parameters */ ParameterIndex(273),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(278),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4981,9 +5070,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(197),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(202),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4992,9 +5081,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(16),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5003,9 +5092,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(19),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(26),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5014,9 +5103,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(17),
-    /* parameters */ ParameterIndex(282),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* templates */ TemplateIndex(24),
+    /* parameters */ ParameterIndex(287),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5025,9 +5114,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(201),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(206),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5036,9 +5125,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(20),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* templates */ TemplateIndex(27),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5047,9 +5136,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(330),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(335),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5058,9 +5147,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(332),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(337),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5069,9 +5158,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(334),
-    /* return_matcher_indices */ MatcherIndicesIndex(93),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(339),
+    /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5080,9 +5169,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(336),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(341),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5091,9 +5180,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(338),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(343),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5102,9 +5191,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(93),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5113,9 +5202,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(342),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(347),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5124,9 +5213,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(288),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(293),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5135,9 +5224,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(291),
-    /* return_matcher_indices */ MatcherIndicesIndex(93),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(296),
+    /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5146,9 +5235,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(294),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(299),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5157,9 +5246,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(344),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(349),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5168,9 +5257,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(346),
-    /* return_matcher_indices */ MatcherIndicesIndex(93),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(351),
+    /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5179,9 +5268,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(348),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(353),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5191,8 +5280,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(237),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(242),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5203,7 +5292,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5213,8 +5302,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(165),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(170),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5223,9 +5312,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5234,9 +5323,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(99),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5247,7 +5336,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5257,8 +5346,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(169),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(174),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5269,7 +5358,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(119),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5278,9 +5367,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(56),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5291,7 +5380,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5301,8 +5390,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(157),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(162),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5311,9 +5400,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5322,9 +5411,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(84),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5334,8 +5423,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5344,9 +5433,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5355,9 +5444,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -5366,9 +5455,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -5377,9 +5466,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -5388,9 +5477,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -5399,9 +5488,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(297),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(302),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5410,9 +5499,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(300),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(305),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5421,9 +5510,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(303),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(308),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5432,9 +5521,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(379),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(384),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5443,9 +5532,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(381),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(386),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5454,9 +5543,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(383),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(388),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5465,9 +5554,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5476,9 +5565,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5487,9 +5576,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5498,9 +5587,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(59),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(63),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5509,9 +5598,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(61),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(65),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5522,7 +5611,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(124),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5533,7 +5622,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(124),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5542,9 +5631,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(62),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5553,9 +5642,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(62),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5566,7 +5655,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(129),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5577,7 +5666,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(129),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5587,8 +5676,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(177),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(182),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5597,9 +5686,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(134),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5608,9 +5697,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
+    /* templates */ TemplateIndex(10),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5619,9 +5708,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
+    /* templates */ TemplateIndex(10),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5630,9 +5719,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5641,9 +5730,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5652,9 +5741,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(3),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5663,9 +5752,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5674,9 +5763,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(74),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5685,9 +5774,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(74),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5696,9 +5785,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(26),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5707,9 +5796,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(26),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5718,9 +5807,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(153),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(158),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5729,9 +5818,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(79),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5742,7 +5831,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5752,8 +5841,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(157),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(162),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5762,9 +5851,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5773,9 +5862,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(84),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5785,8 +5874,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5795,9 +5884,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5806,8 +5895,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(243),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(248),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5817,8 +5906,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(246),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(251),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5828,8 +5917,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(185),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(190),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5839,8 +5928,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(249),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(254),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5850,8 +5939,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(252),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(257),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5861,8 +5950,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(255),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(260),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5872,8 +5961,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(189),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(194),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5883,8 +5972,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(258),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(263),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5894,8 +5983,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(261),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(266),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5905,8 +5994,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(264),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(269),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5916,8 +6005,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(193),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(198),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5927,8 +6016,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(267),
+    /* templates */ TemplateIndex(8),
+    /* parameters */ ParameterIndex(272),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -5938,9 +6027,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -5949,9 +6038,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -5960,9 +6049,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -5971,9 +6060,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -5982,9 +6071,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(297),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(302),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5993,9 +6082,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(300),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(305),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -6004,9 +6093,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6015,9 +6104,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6026,9 +6115,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6037,9 +6126,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(59),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(63),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6048,9 +6137,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(61),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(65),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6059,9 +6148,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6070,9 +6159,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(75),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6081,9 +6170,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6092,9 +6181,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6103,9 +6192,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(154),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(159),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6114,9 +6203,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6127,7 +6216,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6138,7 +6227,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6148,8 +6237,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6160,7 +6249,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6169,9 +6258,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6180,9 +6269,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6191,9 +6280,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6202,9 +6291,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6213,9 +6302,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(372),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(377),
+    /* return_matcher_indices */ MatcherIndicesIndex(50),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6224,9 +6313,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(371),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(376),
+    /* return_matcher_indices */ MatcherIndicesIndex(50),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -6235,9 +6324,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(373),
-    /* return_matcher_indices */ MatcherIndicesIndex(169),
+    /* templates */ TemplateIndex(29),
+    /* parameters */ ParameterIndex(378),
+    /* return_matcher_indices */ MatcherIndicesIndex(180),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -6246,9 +6335,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(375),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(29),
+    /* parameters */ ParameterIndex(380),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -6257,9 +6346,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(377),
-    /* return_matcher_indices */ MatcherIndicesIndex(42),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(382),
+    /* return_matcher_indices */ MatcherIndicesIndex(54),
     /* const_eval_fn */ ConstEvalFunctionIndex(89),
   },
   {
@@ -6268,9 +6357,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -6279,9 +6368,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -6290,9 +6379,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6301,9 +6390,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -6312,9 +6401,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6323,9 +6412,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6334,9 +6423,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6345,9 +6434,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(59),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(63),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6356,9 +6445,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(61),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(212),
+    /* templates */ TemplateIndex(65),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(223),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6369,7 +6458,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(104),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6380,7 +6469,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(104),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6389,9 +6478,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(38),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6400,9 +6489,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(38),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6413,7 +6502,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6424,7 +6513,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6434,8 +6523,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(173),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(178),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6444,9 +6533,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(114),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6457,7 +6546,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6468,7 +6557,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6477,9 +6566,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6488,9 +6577,9 @@
     /* num_parameters */ 7,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6501,7 +6590,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6512,7 +6601,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6523,7 +6612,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(119),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6532,9 +6621,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(56),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6545,7 +6634,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6556,7 +6645,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6565,9 +6654,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6576,9 +6665,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6588,8 +6677,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6598,9 +6687,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6611,7 +6700,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6622,7 +6711,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6631,9 +6720,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6642,9 +6731,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6654,8 +6743,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6664,9 +6753,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6677,7 +6766,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6688,7 +6777,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6697,9 +6786,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6708,9 +6797,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6720,8 +6809,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6730,9 +6819,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6741,9 +6830,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -6752,9 +6841,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(404),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(409),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -6763,9 +6852,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6774,9 +6863,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -6785,9 +6874,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(405),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(410),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6796,9 +6885,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(406),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(411),
+    /* return_matcher_indices */ MatcherIndicesIndex(231),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6807,9 +6896,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -6818,9 +6907,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(407),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(412),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -6829,9 +6918,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6840,9 +6929,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -6851,9 +6940,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(408),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(413),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6862,9 +6951,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(409),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(414),
+    /* return_matcher_indices */ MatcherIndicesIndex(237),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6873,9 +6962,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -6884,9 +6973,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(410),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(415),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -6895,9 +6984,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6906,9 +6995,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -6917,9 +7006,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(411),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(416),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6928,9 +7017,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(412),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(417),
+    /* return_matcher_indices */ MatcherIndicesIndex(243),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6939,9 +7028,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -6950,9 +7039,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(413),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(418),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -6961,9 +7050,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6972,9 +7061,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -6983,9 +7072,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(414),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(419),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6994,9 +7083,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(415),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(420),
+    /* return_matcher_indices */ MatcherIndicesIndex(249),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7005,9 +7094,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7016,9 +7105,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(416),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(421),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7027,9 +7116,9 @@
     /* num_parameters */ 9,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -7038,9 +7127,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7049,9 +7138,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(417),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(422),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7060,9 +7149,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(418),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(423),
+    /* return_matcher_indices */ MatcherIndicesIndex(255),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7071,9 +7160,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7082,9 +7171,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(419),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(424),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7093,9 +7182,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -7104,9 +7193,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7115,9 +7204,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(420),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(425),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7126,9 +7215,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(421),
-    /* return_matcher_indices */ MatcherIndicesIndex(250),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(426),
+    /* return_matcher_indices */ MatcherIndicesIndex(261),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7137,9 +7226,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7148,9 +7237,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(422),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(427),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7159,9 +7248,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -7170,9 +7259,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7181,9 +7270,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(423),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(428),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7192,9 +7281,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(424),
-    /* return_matcher_indices */ MatcherIndicesIndex(256),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(429),
+    /* return_matcher_indices */ MatcherIndicesIndex(267),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7203,9 +7292,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7214,9 +7303,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(425),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(430),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7225,9 +7314,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -7236,9 +7325,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7247,9 +7336,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(426),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(431),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7258,9 +7347,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(427),
-    /* return_matcher_indices */ MatcherIndicesIndex(262),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(432),
+    /* return_matcher_indices */ MatcherIndicesIndex(273),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7269,9 +7358,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7280,9 +7369,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(428),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(433),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7291,9 +7380,9 @@
     /* num_parameters */ 16,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -7302,9 +7391,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7313,9 +7402,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(55),
-    /* parameters */ ParameterIndex(429),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* templates */ TemplateIndex(59),
+    /* parameters */ ParameterIndex(434),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7324,9 +7413,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(53),
-    /* parameters */ ParameterIndex(430),
-    /* return_matcher_indices */ MatcherIndicesIndex(268),
+    /* templates */ TemplateIndex(57),
+    /* parameters */ ParameterIndex(435),
+    /* return_matcher_indices */ MatcherIndicesIndex(279),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7335,9 +7424,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7346,9 +7435,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(7),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7359,7 +7448,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7370,7 +7459,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7379,9 +7468,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(396),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(401),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7390,9 +7479,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -7401,9 +7490,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -7412,9 +7501,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -7423,9 +7512,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -7434,9 +7523,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(370),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(375),
+    /* return_matcher_indices */ MatcherIndicesIndex(50),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -7445,9 +7534,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -7456,9 +7545,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -7467,9 +7556,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -7478,9 +7567,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -7489,9 +7578,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(370),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(375),
+    /* return_matcher_indices */ MatcherIndicesIndex(50),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -7500,9 +7589,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(90),
   },
   {
@@ -7511,9 +7600,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(90),
   },
   {
@@ -7522,9 +7611,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(90),
   },
   {
@@ -7533,9 +7622,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(90),
   },
   {
@@ -7544,9 +7633,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(91),
   },
   {
@@ -7555,9 +7644,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(91),
   },
   {
@@ -7566,9 +7655,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(91),
   },
   {
@@ -7577,9 +7666,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(91),
   },
   {
@@ -7589,8 +7678,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -7599,9 +7688,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(57),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(69),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -7610,9 +7699,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -7621,9 +7710,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -7633,8 +7722,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -7643,9 +7732,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(57),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(69),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -7654,9 +7743,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -7665,9 +7754,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -7676,9 +7765,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(42),
   },
   {
@@ -7687,9 +7776,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(42),
   },
   {
@@ -7698,9 +7787,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(227),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(42),
   },
   {
@@ -7709,9 +7798,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(230),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(235),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(62),
   },
   {
@@ -7720,9 +7809,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(222),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(227),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(62),
   },
   {
@@ -7731,9 +7820,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(233),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(63),
   },
   {
@@ -7744,7 +7833,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(88),
+    /* return_matcher_indices */ MatcherIndicesIndex(100),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7754,8 +7843,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(399),
-    /* return_matcher_indices */ MatcherIndicesIndex(88),
+    /* parameters */ ParameterIndex(404),
+    /* return_matcher_indices */ MatcherIndicesIndex(100),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7764,9 +7853,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(63),
+    /* templates */ TemplateIndex(67),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(88),
+    /* return_matcher_indices */ MatcherIndicesIndex(100),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7777,7 +7866,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7788,7 +7877,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7797,9 +7886,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(64),
+    /* templates */ TemplateIndex(68),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7810,7 +7899,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7820,8 +7909,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(387),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(392),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7830,9 +7919,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(65),
+    /* templates */ TemplateIndex(69),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7843,7 +7932,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(225),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7853,8 +7942,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(400),
-    /* return_matcher_indices */ MatcherIndicesIndex(225),
+    /* parameters */ ParameterIndex(405),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7863,9 +7952,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(66),
+    /* templates */ TemplateIndex(70),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(225),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7876,7 +7965,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -7886,8 +7975,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -7896,9 +7985,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(67),
+    /* templates */ TemplateIndex(71),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7907,9 +7996,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
@@ -7918,9 +8007,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
@@ -7929,9 +8018,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
@@ -7940,9 +8029,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
@@ -7951,9 +8040,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(2),
   },
   {
@@ -7962,9 +8051,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(2),
   },
   {
@@ -7974,8 +8063,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(3),
   },
   {
@@ -7984,9 +8073,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(3),
   },
   {
@@ -7996,8 +8085,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(4),
   },
   {
@@ -8006,9 +8095,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(4),
   },
   {
@@ -8017,9 +8106,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(5),
   },
   {
@@ -8028,9 +8117,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(5),
   },
   {
@@ -8039,9 +8128,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(6),
   },
   {
@@ -8050,9 +8139,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(6),
   },
   {
@@ -8061,9 +8150,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(7),
   },
   {
@@ -8072,9 +8161,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(7),
   },
   {
@@ -8083,9 +8172,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(8),
   },
   {
@@ -8094,9 +8183,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(8),
   },
   {
@@ -8105,9 +8194,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(9),
   },
   {
@@ -8116,9 +8205,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(9),
   },
   {
@@ -8127,9 +8216,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -8138,9 +8227,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -8149,9 +8238,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(11),
   },
   {
@@ -8160,9 +8249,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(11),
   },
   {
@@ -8171,9 +8260,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(12),
   },
   {
@@ -8182,9 +8271,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(12),
   },
   {
@@ -8193,9 +8282,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(13),
   },
   {
@@ -8204,9 +8293,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(13),
   },
   {
@@ -8215,9 +8304,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(14),
   },
   {
@@ -8226,9 +8315,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(14),
   },
   {
@@ -8237,9 +8326,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(15),
   },
   {
@@ -8248,9 +8337,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(15),
   },
   {
@@ -8259,9 +8348,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(16),
   },
   {
@@ -8270,9 +8359,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(16),
   },
   {
@@ -8281,9 +8370,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(18),
   },
   {
@@ -8292,9 +8381,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(18),
   },
   {
@@ -8303,9 +8392,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(20),
   },
   {
@@ -8314,9 +8403,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(20),
   },
   {
@@ -8326,8 +8415,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(387),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(392),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8336,9 +8425,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(388),
-    /* return_matcher_indices */ MatcherIndicesIndex(63),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(393),
+    /* return_matcher_indices */ MatcherIndicesIndex(75),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8347,9 +8436,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(24),
   },
   {
@@ -8358,9 +8447,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(24),
   },
   {
@@ -8369,9 +8458,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(25),
   },
   {
@@ -8380,9 +8469,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(25),
   },
   {
@@ -8391,9 +8480,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(26),
   },
   {
@@ -8402,9 +8491,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(150),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(155),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(26),
   },
   {
@@ -8413,9 +8502,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(28),
   },
   {
@@ -8424,9 +8513,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(28),
   },
   {
@@ -8435,9 +8524,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(29),
   },
   {
@@ -8446,9 +8535,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(29),
   },
   {
@@ -8457,9 +8546,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(30),
   },
   {
@@ -8468,9 +8557,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(30),
   },
   {
@@ -8479,9 +8568,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(31),
   },
   {
@@ -8490,9 +8579,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(31),
   },
   {
@@ -8501,9 +8590,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(32),
   },
   {
@@ -8512,9 +8601,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(32),
   },
   {
@@ -8523,9 +8612,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(178),
+    /* return_matcher_indices */ MatcherIndicesIndex(189),
     /* const_eval_fn */ ConstEvalFunctionIndex(33),
   },
   {
@@ -8534,9 +8623,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(66),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(78),
     /* const_eval_fn */ ConstEvalFunctionIndex(33),
   },
   {
@@ -8545,9 +8634,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(15),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(34),
   },
   {
@@ -8556,9 +8645,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(34),
   },
   {
@@ -8567,9 +8656,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(35),
   },
   {
@@ -8578,9 +8667,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(35),
   },
   {
@@ -8589,9 +8678,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(9),
-    /* parameters */ ParameterIndex(306),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(16),
+    /* parameters */ ParameterIndex(311),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(36),
   },
   {
@@ -8600,9 +8689,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(308),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(313),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(36),
   },
   {
@@ -8611,9 +8700,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(37),
   },
   {
@@ -8622,9 +8711,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(37),
   },
   {
@@ -8633,9 +8722,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(38),
   },
   {
@@ -8644,9 +8733,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(38),
   },
   {
@@ -8655,9 +8744,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(39),
   },
   {
@@ -8666,9 +8755,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(39),
   },
   {
@@ -8677,9 +8766,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(40),
   },
   {
@@ -8688,9 +8777,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(40),
   },
   {
@@ -8699,9 +8788,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(41),
   },
   {
@@ -8710,9 +8799,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(41),
   },
   {
@@ -8721,9 +8810,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(180),
+    /* return_matcher_indices */ MatcherIndicesIndex(191),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
   },
   {
@@ -8732,9 +8821,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(72),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(84),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
   },
   {
@@ -8743,9 +8832,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(54),
   },
   {
@@ -8754,9 +8843,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(54),
   },
   {
@@ -8766,8 +8855,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(387),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* parameters */ ParameterIndex(392),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(55),
   },
   {
@@ -8776,9 +8865,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(388),
-    /* return_matcher_indices */ MatcherIndicesIndex(63),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(393),
+    /* return_matcher_indices */ MatcherIndicesIndex(75),
     /* const_eval_fn */ ConstEvalFunctionIndex(55),
   },
   {
@@ -8787,9 +8876,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(56),
   },
   {
@@ -8798,9 +8887,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(56),
   },
   {
@@ -8809,9 +8898,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(59),
   },
   {
@@ -8820,9 +8909,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(59),
   },
   {
@@ -8831,9 +8920,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(60),
   },
   {
@@ -8842,9 +8931,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(60),
   },
   {
@@ -8853,9 +8942,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(61),
   },
   {
@@ -8864,9 +8953,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(20),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(61),
   },
   {
@@ -8875,9 +8964,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(45),
+    /* templates */ TemplateIndex(49),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(64),
   },
   {
@@ -8886,9 +8975,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(44),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(48),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(64),
   },
   {
@@ -8897,9 +8986,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(65),
   },
   {
@@ -8908,9 +8997,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(65),
   },
   {
@@ -8919,9 +9008,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(66),
   },
   {
@@ -8930,9 +9019,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(66),
   },
   {
@@ -8941,9 +9030,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(67),
   },
   {
@@ -8952,9 +9041,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(67),
   },
   {
@@ -8963,9 +9052,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(68),
   },
   {
@@ -8974,9 +9063,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(68),
   },
   {
@@ -8985,9 +9074,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(69),
   },
   {
@@ -8996,9 +9085,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(69),
   },
   {
@@ -9007,9 +9096,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(70),
   },
   {
@@ -9018,9 +9107,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(70),
   },
   {
@@ -9029,9 +9118,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(71),
   },
   {
@@ -9040,9 +9129,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(71),
   },
   {
@@ -9051,9 +9140,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(11),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
   },
   {
@@ -9062,9 +9151,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
   },
   {
@@ -9073,9 +9162,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9085,8 +9174,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9097,7 +9186,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9107,8 +9196,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(240),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* parameters */ ParameterIndex(245),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9117,9 +9206,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(350),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(355),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9128,9 +9217,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(352),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(357),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9139,9 +9228,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(350),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(355),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9150,9 +9239,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(352),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(357),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9161,9 +9250,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(354),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(359),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9172,9 +9261,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(356),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(361),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9183,9 +9272,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(358),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(363),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9194,9 +9283,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(360),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(365),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9205,9 +9294,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
-    /* parameters */ ParameterIndex(350),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(41),
+    /* parameters */ ParameterIndex(355),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9216,9 +9305,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(36),
-    /* parameters */ ParameterIndex(352),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(40),
+    /* parameters */ ParameterIndex(357),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9227,9 +9316,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(362),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(367),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9238,9 +9327,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(364),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(369),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9249,9 +9338,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(362),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(367),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9260,9 +9349,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(364),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(369),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9272,8 +9361,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(81),
   },
   {
@@ -9282,9 +9371,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(57),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(69),
     /* const_eval_fn */ ConstEvalFunctionIndex(81),
   },
   {
@@ -9293,9 +9382,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9304,9 +9393,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9315,9 +9404,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(45),
+    /* templates */ TemplateIndex(49),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(83),
   },
   {
@@ -9326,9 +9415,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(45),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(49),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(83),
   },
   {
@@ -9337,9 +9426,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -9348,9 +9437,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -9359,9 +9448,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(97),
   },
   {
@@ -9370,9 +9459,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(97),
   },
   {
@@ -9381,9 +9470,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(41),
+    /* templates */ TemplateIndex(45),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(98),
   },
   {
@@ -9392,9 +9481,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(41),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(45),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(98),
   },
   {
@@ -9403,9 +9492,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
   },
   {
@@ -9414,9 +9503,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
   },
   {
@@ -9425,9 +9514,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(100),
   },
   {
@@ -9436,9 +9525,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(100),
   },
   {
@@ -9447,9 +9536,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(101),
   },
   {
@@ -9458,9 +9547,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(101),
   },
   {
@@ -9469,9 +9558,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(35),
+    /* templates */ TemplateIndex(39),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
   },
   {
@@ -9480,9 +9569,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(35),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(172),
+    /* templates */ TemplateIndex(39),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(183),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
   },
   {
@@ -9491,9 +9580,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(103),
   },
   {
@@ -9502,9 +9591,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(368),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(373),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(103),
   },
   {
@@ -9513,9 +9602,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(104),
   },
   {
@@ -9524,9 +9613,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(51),
-    /* parameters */ ParameterIndex(368),
-    /* return_matcher_indices */ MatcherIndicesIndex(60),
+    /* templates */ TemplateIndex(55),
+    /* parameters */ ParameterIndex(373),
+    /* return_matcher_indices */ MatcherIndicesIndex(72),
     /* const_eval_fn */ ConstEvalFunctionIndex(104),
   },
   {
@@ -9535,9 +9624,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(39),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* templates */ TemplateIndex(43),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9546,9 +9635,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(141),
     /* const_eval_fn */ ConstEvalFunctionIndex(17),
   },
   {
@@ -9557,9 +9646,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(386),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(391),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(19),
   },
   {
@@ -9568,9 +9657,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(21),
   },
   {
@@ -9581,7 +9670,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(88),
+    /* return_matcher_indices */ MatcherIndicesIndex(100),
     /* const_eval_fn */ ConstEvalFunctionIndex(22),
   },
   {
@@ -9592,7 +9681,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(23),
   },
   {
@@ -9601,9 +9690,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(27),
   },
   {
@@ -9612,9 +9701,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(44),
   },
   {
@@ -9624,8 +9713,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(389),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(394),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(45),
   },
   {
@@ -9635,8 +9724,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(389),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(394),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(46),
   },
   {
@@ -9646,8 +9735,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(389),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(394),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(47),
   },
   {
@@ -9657,8 +9746,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(390),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(395),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(48),
   },
   {
@@ -9668,8 +9757,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(390),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(395),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(49),
   },
   {
@@ -9679,8 +9768,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(391),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(396),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(50),
   },
   {
@@ -9690,8 +9779,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(392),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(397),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(51),
   },
   {
@@ -9701,8 +9790,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(391),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(396),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(52),
   },
   {
@@ -9712,8 +9801,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(392),
-    /* return_matcher_indices */ MatcherIndicesIndex(98),
+    /* parameters */ ParameterIndex(397),
+    /* return_matcher_indices */ MatcherIndicesIndex(106),
     /* const_eval_fn */ ConstEvalFunctionIndex(53),
   },
   {
@@ -9722,9 +9811,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(57),
   },
   {
@@ -9733,9 +9822,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(227),
-    /* return_matcher_indices */ MatcherIndicesIndex(54),
+    /* templates */ TemplateIndex(15),
+    /* parameters */ ParameterIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(66),
     /* const_eval_fn */ ConstEvalFunctionIndex(58),
   },
   {
@@ -9755,9 +9844,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(11),
-    /* parameters */ ParameterIndex(393),
-    /* return_matcher_indices */ MatcherIndicesIndex(30),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(398),
+    /* return_matcher_indices */ MatcherIndicesIndex(42),
     /* const_eval_fn */ ConstEvalFunctionIndex(72),
   },
   {
@@ -9768,7 +9857,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(74),
   },
   {
@@ -9779,7 +9868,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(75),
   },
   {
@@ -9790,7 +9879,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(76),
   },
   {
@@ -9801,7 +9890,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(77),
   },
   {
@@ -9812,7 +9901,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(89),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(78),
   },
   {
@@ -9823,7 +9912,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(93),
+    /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(79),
   },
   {
@@ -9834,7 +9923,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(80),
   },
   {
@@ -9843,9 +9932,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(398),
-    /* return_matcher_indices */ MatcherIndicesIndex(101),
+    /* templates */ TemplateIndex(7),
+    /* parameters */ ParameterIndex(403),
+    /* return_matcher_indices */ MatcherIndicesIndex(109),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9854,9 +9943,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9865,7 +9954,7 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(0),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9876,9 +9965,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9887,9 +9976,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(37),
+    /* templates */ TemplateIndex(41),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(229),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9899,8 +9988,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(97),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(105),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9911,7 +10000,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9921,20 +10010,20 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [479] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 2,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
-    /* const_eval_fn */ ConstEvalFunctionIndex(95),
+    /* num_templates   */ 5,
+    /* templates */ TemplateIndex(2),
+    /* parameters */ ParameterIndex(149),
+    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [480] */
@@ -9943,20 +10032,20 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(12),
-    /* const_eval_fn */ ConstEvalFunctionIndex(96),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
+    /* const_eval_fn */ ConstEvalFunctionIndex(95),
   },
   {
     /* [481] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 0,
-    /* num_explicit_templates */ 3,
-    /* num_templates   */ 3,
-    /* templates */ TemplateIndex(25),
-    /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(11),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 2,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(24),
+    /* const_eval_fn */ ConstEvalFunctionIndex(96),
   },
   {
     /* [482] */
@@ -9964,9 +10053,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 3,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(28),
+    /* templates */ TemplateIndex(32),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(16),
+    /* return_matcher_indices */ MatcherIndicesIndex(23),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9975,9 +10064,20 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 3,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(31),
+    /* templates */ TemplateIndex(0),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(21),
+    /* return_matcher_indices */ MatcherIndicesIndex(28),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [484] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 0,
+    /* num_explicit_templates */ 3,
+    /* num_templates   */ 3,
+    /* templates */ TemplateIndex(35),
+    /* parameters */ ParameterIndex(/* invalid */),
+    /* return_matcher_indices */ MatcherIndicesIndex(33),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
 };
@@ -11081,6 +11181,12 @@
     /* num overloads */ 2,
     /* overloads */ OverloadIndex(417),
   },
+  {
+    /* [145] */
+    /* fn subgroupMatrixStore[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num, AC : num](ptr<workgroup_or_storage, array<S, AC>, writable>, u32, subgroup_matrix<K, S, C, R>, bool, u32) */
+    /* num overloads */ 1,
+    /* overloads */ OverloadIndex(479),
+  },
 };
 
 constexpr IntrinsicInfo kUnaryOperators[] = {
@@ -11192,13 +11298,13 @@
     /* [8] */
     /* op &&(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(479),
+    /* overloads */ OverloadIndex(480),
   },
   {
     /* [9] */
     /* op ||(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(480),
+    /* overloads */ OverloadIndex(481),
   },
   {
     /* [10] */
@@ -11470,19 +11576,19 @@
     /* [17] */
     /* ctor subgroup_matrix_left<T : subgroup_matrix_elements, K : num, R : num>() -> subgroup_matrix<subgroup_matrix_kind_left, T, K, R> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(481),
+    /* overloads */ OverloadIndex(482),
   },
   {
     /* [18] */
     /* ctor subgroup_matrix_right<T : subgroup_matrix_elements, C : num, K : num>() -> subgroup_matrix<subgroup_matrix_kind_right, T, C, K> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(482),
+    /* overloads */ OverloadIndex(483),
   },
   {
     /* [19] */
     /* ctor subgroup_matrix_result<T : subgroup_matrix_elements, C : num, R : num>() -> subgroup_matrix<subgroup_matrix_kind_result, T, C, R> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(483),
+    /* overloads */ OverloadIndex(484),
   },
 };
 
diff --git a/src/tint/lang/core/intrinsic/type_matchers.h b/src/tint/lang/core/intrinsic/type_matchers.h
index afdb733..67dbada 100644
--- a/src/tint/lang/core/intrinsic/type_matchers.h
+++ b/src/tint/lang/core/intrinsic/type_matchers.h
@@ -299,6 +299,43 @@
                                        A.Value(), B.Value());
 }
 
+inline bool MatchArray(intrinsic::MatchState&,
+                       const type::Type* ty,
+                       const type::Type*& T,
+                       intrinsic::Number& C) {
+    if (ty->Is<intrinsic::Any>()) {
+        T = ty;
+        C = intrinsic::Number::any;
+        return true;
+    }
+
+    if (auto* a = ty->As<type::Array>()) {
+        if (auto count = a->Count()->As<type::ConstantArrayCount>()) {
+            T = a->ElemType();
+            C = intrinsic::Number(count->value);
+            return true;
+        }
+    }
+    return false;
+}
+
+inline const type::Array* BuildArray(intrinsic::MatchState& state,
+                                     const type::Type*,
+                                     const type::Type* el,
+                                     intrinsic::Number C) {
+    uint32_t el_align = el->Align();
+    uint32_t el_size = el->Size();
+    uint32_t stride = tint::RoundUp<uint32_t>(el_align, el_size);
+    uint32_t size = C.Value() * stride;
+    return state.types.Get<type::Array>(
+        el,
+        /* count */ state.types.Get<type::ConstantArrayCount>(C.Value()),
+        /* align */ el_align,
+        /* size */ size,
+        /* stride */ stride,
+        /* stride_implicit */ stride);
+}
+
 inline bool MatchRuntimeArray(intrinsic::MatchState&, const type::Type* ty, const type::Type*& T) {
     if (ty->Is<intrinsic::Any>()) {
         T = ty;
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index c6bd599..2e38cdb 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -1740,6 +1740,8 @@
                 return core::BuiltinFn::kQuadSwapY;
             case pb::BuiltinFn::quad_swap_diagonal:
                 return core::BuiltinFn::kQuadSwapDiagonal;
+            case pb::BuiltinFn::subgroup_matrix_store:
+                return core::BuiltinFn::kSubgroupMatrixStore;
 
             case pb::BuiltinFn::BuiltinFn_INT_MIN_SENTINEL_DO_NOT_USE_:
             case pb::BuiltinFn::BuiltinFn_INT_MAX_SENTINEL_DO_NOT_USE_:
diff --git a/src/tint/lang/core/ir/binary/encode.cc b/src/tint/lang/core/ir/binary/encode.cc
index 43000d6..5d4e42a 100644
--- a/src/tint/lang/core/ir/binary/encode.cc
+++ b/src/tint/lang/core/ir/binary/encode.cc
@@ -1240,6 +1240,8 @@
                 return pb::BuiltinFn::quad_swap_y;
             case core::BuiltinFn::kQuadSwapDiagonal:
                 return pb::BuiltinFn::quad_swap_diagonal;
+            case core::BuiltinFn::kSubgroupMatrixStore:
+                return pb::BuiltinFn::subgroup_matrix_store;
             case core::BuiltinFn::kNone:
                 break;
         }
diff --git a/src/tint/lang/core/ir/core_builtin_call.cc b/src/tint/lang/core/ir/core_builtin_call.cc
index 03e2f01..6f80e33 100644
--- a/src/tint/lang/core/ir/core_builtin_call.cc
+++ b/src/tint/lang/core/ir/core_builtin_call.cc
@@ -69,6 +69,7 @@
         case BuiltinFn::kTextureLoad:
             return Accesses{Access::kLoad};
 
+        case BuiltinFn::kSubgroupMatrixStore:
         case BuiltinFn::kTextureStore:
             return Accesses{Access::kStore};
 
diff --git a/src/tint/lang/wgsl/builtin_fn.cc b/src/tint/lang/wgsl/builtin_fn.cc
index ef60bc7..126d00d 100644
--- a/src/tint/lang/wgsl/builtin_fn.cc
+++ b/src/tint/lang/wgsl/builtin_fn.cc
@@ -480,6 +480,9 @@
     if (name == "quadSwapDiagonal") {
         return BuiltinFn::kQuadSwapDiagonal;
     }
+    if (name == "subgroupMatrixStore") {
+        return BuiltinFn::kSubgroupMatrixStore;
+    }
     if (name == "__tint_materialize") {
         return BuiltinFn::kTintMaterialize;
     }
@@ -784,6 +787,8 @@
             return "quadSwapY";
         case BuiltinFn::kQuadSwapDiagonal:
             return "quadSwapDiagonal";
+        case BuiltinFn::kSubgroupMatrixStore:
+            return "subgroupMatrixStore";
         case BuiltinFn::kTintMaterialize:
             return "__tint_materialize";
     }
diff --git a/src/tint/lang/wgsl/builtin_fn.h b/src/tint/lang/wgsl/builtin_fn.h
index 0c10b63..0308b9b 100644
--- a/src/tint/lang/wgsl/builtin_fn.h
+++ b/src/tint/lang/wgsl/builtin_fn.h
@@ -194,6 +194,7 @@
     kQuadSwapX,
     kQuadSwapY,
     kQuadSwapDiagonal,
+    kSubgroupMatrixStore,
     kTintMaterialize,
     kNone,
 };
@@ -364,6 +365,7 @@
     BuiltinFn::kQuadSwapX,
     BuiltinFn::kQuadSwapY,
     BuiltinFn::kQuadSwapDiagonal,
+    BuiltinFn::kSubgroupMatrixStore,
     BuiltinFn::kTintMaterialize,
 };
 
@@ -516,6 +518,7 @@
     "quadSwapX",
     "quadSwapY",
     "quadSwapDiagonal",
+    "subgroupMatrixStore",
     "__tint_materialize",
 };
 
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index cde2435..16c010e 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -625,6 +625,32 @@
 };
 
 
+/// TypeMatcher for 'type array'
+constexpr TypeMatcher kArrayMatcher {
+/* match */ [](MatchState& state, const Type* ty) -> const Type* {
+  const Type* T = nullptr;
+  Number N = Number::invalid;
+    if (!MatchArray(state, ty, T, N)) {
+      return nullptr;
+    }
+    T = state.Type(T);
+    if (T == nullptr) {
+      return nullptr;
+    }
+    N = state.Num(N);
+    if (!N.IsValid()) {
+      return nullptr;
+    }
+    return BuildArray(state, ty, T, N);
+  },
+/* print */ []([[maybe_unused]] MatchState* state, StyledText& out) {StyledText T;
+  state->PrintType(T);StyledText N;
+  state->PrintNum(N);
+    out << style::Type("array", "<", T, ", ", N, ">");
+  }
+};
+
+
 /// TypeMatcher for 'type sampler'
 constexpr TypeMatcher kSamplerMatcher {
 /* match */ [](MatchState& state, const Type* ty) -> const Type* {
@@ -1133,6 +1159,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 scalar'
 constexpr TypeMatcher kScalarMatcher {
 /* match */ [](MatchState& state, const Type* ty) -> const Type* {
@@ -1605,6 +1669,74 @@
  kI32Matcher.print(nullptr, out); out << style::Plain(" or "); kU32Matcher.print(nullptr, out);}
 };
 
+/// TypeMatcher for 'match subgroup_matrix_elements'
+constexpr TypeMatcher kSubgroupMatrixElementsMatcher {
+/* match */ [](MatchState& state, const Type* ty) -> const Type* {
+    if (MatchI32(state, ty)) {
+      return BuildI32(state, ty);
+    }
+    if (MatchU32(state, ty)) {
+      return BuildU32(state, ty);
+    }
+    if (MatchF32(state, ty)) {
+      return BuildF32(state, ty);
+    }
+    if (MatchF16(state, ty)) {
+      return BuildF16(state, ty);
+    }
+    if (MatchU8(state, ty)) {
+      return BuildU8(state, ty);
+    }
+    if (MatchI8(state, ty)) {
+      return BuildI8(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(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU8Matcher.print(nullptr, out); out << style::Plain(" or "); kI8Matcher.print(nullptr, out);}
+};
+
+/// 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");
+  }
+};
+
 /// EnumMatcher for 'match f32_texel_format'
 constexpr NumberMatcher kF32TexelFormatMatcher {
 /* match */ [](MatchState&, Number number) -> Number {
@@ -1803,79 +1935,83 @@
   /* [1] */ TemplateTypeMatcher<1>::matcher,
   /* [2] */ TemplateTypeMatcher<2>::matcher,
   /* [3] */ TemplateTypeMatcher<3>::matcher,
-  /* [4] */ kBoolMatcher,
-  /* [5] */ kI8Matcher,
-  /* [6] */ kU8Matcher,
-  /* [7] */ kIaMatcher,
-  /* [8] */ kFaMatcher,
-  /* [9] */ kI32Matcher,
-  /* [10] */ kU32Matcher,
-  /* [11] */ kF32Matcher,
-  /* [12] */ kF16Matcher,
-  /* [13] */ kVec2Matcher,
-  /* [14] */ kVec3Matcher,
-  /* [15] */ kVec4Matcher,
-  /* [16] */ kMat2X2Matcher,
-  /* [17] */ kMat2X3Matcher,
-  /* [18] */ kMat2X4Matcher,
-  /* [19] */ kMat3X2Matcher,
-  /* [20] */ kMat3X3Matcher,
-  /* [21] */ kMat3X4Matcher,
-  /* [22] */ kMat4X2Matcher,
-  /* [23] */ kMat4X3Matcher,
-  /* [24] */ kMat4X4Matcher,
-  /* [25] */ kVecMatcher,
-  /* [26] */ kMatMatcher,
-  /* [27] */ kPtrMatcher,
-  /* [28] */ kRefMatcher,
-  /* [29] */ kAtomicMatcher,
-  /* [30] */ kRuntimeArrayMatcher,
-  /* [31] */ kSamplerMatcher,
-  /* [32] */ kSamplerComparisonMatcher,
-  /* [33] */ kTexture1DMatcher,
-  /* [34] */ kTexture2DMatcher,
-  /* [35] */ kTexture2DArrayMatcher,
-  /* [36] */ kTexture3DMatcher,
-  /* [37] */ kTextureCubeMatcher,
-  /* [38] */ kTextureCubeArrayMatcher,
-  /* [39] */ kTextureMultisampled2DMatcher,
-  /* [40] */ kTextureDepth2DMatcher,
-  /* [41] */ kTextureDepth2DArrayMatcher,
-  /* [42] */ kTextureDepthCubeMatcher,
-  /* [43] */ kTextureDepthCubeArrayMatcher,
-  /* [44] */ kTextureDepthMultisampled2DMatcher,
-  /* [45] */ kTextureStorage1DMatcher,
-  /* [46] */ kTextureStorage2DMatcher,
-  /* [47] */ kTextureStorage2DArrayMatcher,
-  /* [48] */ kTextureStorage3DMatcher,
-  /* [49] */ kTextureExternalMatcher,
-  /* [50] */ kPackedVec3Matcher,
-  /* [51] */ kInputAttachmentMatcher,
-  /* [52] */ kModfResultMatcher,
-  /* [53] */ kModfResultVecMatcher,
-  /* [54] */ kFrexpResultMatcher,
-  /* [55] */ kFrexpResultVecMatcher,
-  /* [56] */ kAtomicCompareExchangeResultMatcher,
-  /* [57] */ kScalarMatcher,
-  /* [58] */ kConcreteScalarMatcher,
-  /* [59] */ kScalarNoF32Matcher,
-  /* [60] */ kScalarNoF16Matcher,
-  /* [61] */ kScalarNoI32Matcher,
-  /* [62] */ kScalarNoU32Matcher,
-  /* [63] */ kScalarNoBoolMatcher,
-  /* [64] */ kFiaFiu32F16Matcher,
-  /* [65] */ kFiaFi32F16Matcher,
-  /* [66] */ kFiaFiu32Matcher,
-  /* [67] */ kFaF32Matcher,
-  /* [68] */ kFaF32F16Matcher,
-  /* [69] */ kIaIu32Matcher,
-  /* [70] */ kIaI32Matcher,
-  /* [71] */ kFiu32F16Matcher,
-  /* [72] */ kFiu32Matcher,
-  /* [73] */ kFi32F16Matcher,
-  /* [74] */ kFi32Matcher,
-  /* [75] */ kF32F16Matcher,
-  /* [76] */ kIu32Matcher,
+  /* [4] */ TemplateTypeMatcher<4>::matcher,
+  /* [5] */ kBoolMatcher,
+  /* [6] */ kI8Matcher,
+  /* [7] */ kU8Matcher,
+  /* [8] */ kIaMatcher,
+  /* [9] */ kFaMatcher,
+  /* [10] */ kI32Matcher,
+  /* [11] */ kU32Matcher,
+  /* [12] */ kF32Matcher,
+  /* [13] */ kF16Matcher,
+  /* [14] */ kVec2Matcher,
+  /* [15] */ kVec3Matcher,
+  /* [16] */ kVec4Matcher,
+  /* [17] */ kMat2X2Matcher,
+  /* [18] */ kMat2X3Matcher,
+  /* [19] */ kMat2X4Matcher,
+  /* [20] */ kMat3X2Matcher,
+  /* [21] */ kMat3X3Matcher,
+  /* [22] */ kMat3X4Matcher,
+  /* [23] */ kMat4X2Matcher,
+  /* [24] */ kMat4X3Matcher,
+  /* [25] */ kMat4X4Matcher,
+  /* [26] */ kVecMatcher,
+  /* [27] */ kMatMatcher,
+  /* [28] */ kPtrMatcher,
+  /* [29] */ kRefMatcher,
+  /* [30] */ kAtomicMatcher,
+  /* [31] */ kRuntimeArrayMatcher,
+  /* [32] */ kArrayMatcher,
+  /* [33] */ kSamplerMatcher,
+  /* [34] */ kSamplerComparisonMatcher,
+  /* [35] */ kTexture1DMatcher,
+  /* [36] */ kTexture2DMatcher,
+  /* [37] */ kTexture2DArrayMatcher,
+  /* [38] */ kTexture3DMatcher,
+  /* [39] */ kTextureCubeMatcher,
+  /* [40] */ kTextureCubeArrayMatcher,
+  /* [41] */ kTextureMultisampled2DMatcher,
+  /* [42] */ kTextureDepth2DMatcher,
+  /* [43] */ kTextureDepth2DArrayMatcher,
+  /* [44] */ kTextureDepthCubeMatcher,
+  /* [45] */ kTextureDepthCubeArrayMatcher,
+  /* [46] */ kTextureDepthMultisampled2DMatcher,
+  /* [47] */ kTextureStorage1DMatcher,
+  /* [48] */ kTextureStorage2DMatcher,
+  /* [49] */ kTextureStorage2DArrayMatcher,
+  /* [50] */ kTextureStorage3DMatcher,
+  /* [51] */ kTextureExternalMatcher,
+  /* [52] */ kPackedVec3Matcher,
+  /* [53] */ kInputAttachmentMatcher,
+  /* [54] */ kModfResultMatcher,
+  /* [55] */ kModfResultVecMatcher,
+  /* [56] */ kFrexpResultMatcher,
+  /* [57] */ kFrexpResultVecMatcher,
+  /* [58] */ kAtomicCompareExchangeResultMatcher,
+  /* [59] */ kSubgroupMatrixMatcher,
+  /* [60] */ kScalarMatcher,
+  /* [61] */ kConcreteScalarMatcher,
+  /* [62] */ kScalarNoF32Matcher,
+  /* [63] */ kScalarNoF16Matcher,
+  /* [64] */ kScalarNoI32Matcher,
+  /* [65] */ kScalarNoU32Matcher,
+  /* [66] */ kScalarNoBoolMatcher,
+  /* [67] */ kFiaFiu32F16Matcher,
+  /* [68] */ kFiaFi32F16Matcher,
+  /* [69] */ kFiaFiu32Matcher,
+  /* [70] */ kFaF32Matcher,
+  /* [71] */ kFaF32F16Matcher,
+  /* [72] */ kIaIu32Matcher,
+  /* [73] */ kIaI32Matcher,
+  /* [74] */ kFiu32F16Matcher,
+  /* [75] */ kFiu32Matcher,
+  /* [76] */ kFi32F16Matcher,
+  /* [77] */ kFi32Matcher,
+  /* [78] */ kF32F16Matcher,
+  /* [79] */ kIu32Matcher,
+  /* [80] */ kSubgroupMatrixElementsMatcher,
 };
 
 /// The template numbers, and number matchers
@@ -1884,292 +2020,305 @@
   /* [1] */ TemplateNumberMatcher<1>::matcher,
   /* [2] */ TemplateNumberMatcher<2>::matcher,
   /* [3] */ TemplateNumberMatcher<3>::matcher,
-  /* [4] */ kF32TexelFormatMatcher,
-  /* [5] */ kI32TexelFormatMatcher,
-  /* [6] */ kU32TexelFormatMatcher,
-  /* [7] */ kReadMatcher,
-  /* [8] */ kWriteMatcher,
-  /* [9] */ kReadWriteMatcher,
-  /* [10] */ kReadableMatcher,
-  /* [11] */ kWritableMatcher,
-  /* [12] */ kFunctionPrivateWorkgroupMatcher,
-  /* [13] */ kWorkgroupOrStorageMatcher,
-  /* [14] */ kStorageMatcher,
-  /* [15] */ kWorkgroupMatcher,
+  /* [4] */ TemplateNumberMatcher<4>::matcher,
+  /* [5] */ kSubgroupMatrixKindLeftMatcher,
+  /* [6] */ kSubgroupMatrixKindRightMatcher,
+  /* [7] */ kSubgroupMatrixKindResultMatcher,
+  /* [8] */ kF32TexelFormatMatcher,
+  /* [9] */ kI32TexelFormatMatcher,
+  /* [10] */ kU32TexelFormatMatcher,
+  /* [11] */ kReadMatcher,
+  /* [12] */ kWriteMatcher,
+  /* [13] */ kReadWriteMatcher,
+  /* [14] */ kReadableMatcher,
+  /* [15] */ kWritableMatcher,
+  /* [16] */ kFunctionPrivateWorkgroupMatcher,
+  /* [17] */ kWorkgroupOrStorageMatcher,
+  /* [18] */ kStorageMatcher,
+  /* [19] */ kWorkgroupMatcher,
 };
 
 constexpr MatcherIndex kMatcherIndices[] = {
-  /* [0] */ MatcherIndex(27),
-  /* [1] */ MatcherIndex(14),
-  /* [2] */ MatcherIndex(30),
-  /* [3] */ MatcherIndex(0),
-  /* [4] */ MatcherIndex(1),
-  /* [5] */ MatcherIndex(27),
-  /* [6] */ MatcherIndex(1),
-  /* [7] */ MatcherIndex(29),
-  /* [8] */ MatcherIndex(0),
-  /* [9] */ MatcherIndex(9),
-  /* [10] */ MatcherIndex(26),
-  /* [11] */ MatcherIndex(0),
-  /* [12] */ MatcherIndex(0),
+  /* [0] */ MatcherIndex(28),
+  /* [1] */ MatcherIndex(17),
+  /* [2] */ MatcherIndex(32),
+  /* [3] */ MatcherIndex(1),
+  /* [4] */ MatcherIndex(4),
+  /* [5] */ MatcherIndex(15),
+  /* [6] */ MatcherIndex(0),
+  /* [7] */ MatcherIndex(28),
+  /* [8] */ MatcherIndex(18),
+  /* [9] */ MatcherIndex(31),
+  /* [10] */ MatcherIndex(0),
+  /* [11] */ MatcherIndex(1),
+  /* [12] */ MatcherIndex(28),
   /* [13] */ MatcherIndex(1),
-  /* [14] */ MatcherIndex(26),
-  /* [15] */ MatcherIndex(1),
-  /* [16] */ MatcherIndex(0),
-  /* [17] */ MatcherIndex(2),
-  /* [18] */ MatcherIndex(26),
-  /* [19] */ MatcherIndex(0),
-  /* [20] */ MatcherIndex(1),
-  /* [21] */ MatcherIndex(2),
+  /* [14] */ MatcherIndex(30),
+  /* [15] */ MatcherIndex(0),
+  /* [16] */ MatcherIndex(13),
+  /* [17] */ MatcherIndex(59),
+  /* [18] */ MatcherIndex(0),
+  /* [19] */ MatcherIndex(1),
+  /* [20] */ MatcherIndex(2),
+  /* [21] */ MatcherIndex(3),
   /* [22] */ MatcherIndex(27),
-  /* [23] */ MatcherIndex(15),
+  /* [23] */ MatcherIndex(0),
   /* [24] */ MatcherIndex(0),
-  /* [25] */ MatcherIndex(9),
+  /* [25] */ MatcherIndex(1),
   /* [26] */ MatcherIndex(27),
-  /* [27] */ MatcherIndex(0),
-  /* [28] */ MatcherIndex(1),
+  /* [27] */ MatcherIndex(1),
+  /* [28] */ MatcherIndex(0),
   /* [29] */ MatcherIndex(2),
-  /* [30] */ MatcherIndex(28),
+  /* [30] */ MatcherIndex(27),
   /* [31] */ MatcherIndex(0),
   /* [32] */ MatcherIndex(1),
   /* [33] */ MatcherIndex(2),
-  /* [34] */ MatcherIndex(26),
-  /* [35] */ MatcherIndex(1),
-  /* [36] */ MatcherIndex(2),
-  /* [37] */ MatcherIndex(0),
-  /* [38] */ MatcherIndex(26),
-  /* [39] */ MatcherIndex(2),
-  /* [40] */ MatcherIndex(3),
-  /* [41] */ MatcherIndex(0),
-  /* [42] */ MatcherIndex(26),
-  /* [43] */ MatcherIndex(1),
-  /* [44] */ MatcherIndex(3),
-  /* [45] */ MatcherIndex(0),
-  /* [46] */ MatcherIndex(26),
-  /* [47] */ MatcherIndex(2),
-  /* [48] */ MatcherIndex(1),
+  /* [34] */ MatcherIndex(28),
+  /* [35] */ MatcherIndex(19),
+  /* [36] */ MatcherIndex(0),
+  /* [37] */ MatcherIndex(13),
+  /* [38] */ MatcherIndex(28),
+  /* [39] */ MatcherIndex(0),
+  /* [40] */ MatcherIndex(1),
+  /* [41] */ MatcherIndex(2),
+  /* [42] */ MatcherIndex(29),
+  /* [43] */ MatcherIndex(0),
+  /* [44] */ MatcherIndex(1),
+  /* [45] */ MatcherIndex(2),
+  /* [46] */ MatcherIndex(27),
+  /* [47] */ MatcherIndex(1),
+  /* [48] */ MatcherIndex(2),
   /* [49] */ MatcherIndex(0),
-  /* [50] */ MatcherIndex(25),
-  /* [51] */ MatcherIndex(0),
-  /* [52] */ MatcherIndex(1),
-  /* [53] */ MatcherIndex(25),
-  /* [54] */ MatcherIndex(0),
-  /* [55] */ MatcherIndex(4),
-  /* [56] */ MatcherIndex(25),
-  /* [57] */ MatcherIndex(1),
-  /* [58] */ MatcherIndex(0),
-  /* [59] */ MatcherIndex(25),
+  /* [50] */ MatcherIndex(27),
+  /* [51] */ MatcherIndex(2),
+  /* [52] */ MatcherIndex(3),
+  /* [53] */ MatcherIndex(0),
+  /* [54] */ MatcherIndex(27),
+  /* [55] */ MatcherIndex(1),
+  /* [56] */ MatcherIndex(3),
+  /* [57] */ MatcherIndex(0),
+  /* [58] */ MatcherIndex(27),
+  /* [59] */ MatcherIndex(2),
   /* [60] */ MatcherIndex(1),
-  /* [61] */ MatcherIndex(72),
-  /* [62] */ MatcherIndex(25),
-  /* [63] */ MatcherIndex(1),
-  /* [64] */ MatcherIndex(2),
-  /* [65] */ MatcherIndex(25),
-  /* [66] */ MatcherIndex(1),
-  /* [67] */ MatcherIndex(12),
-  /* [68] */ MatcherIndex(25),
+  /* [61] */ MatcherIndex(0),
+  /* [62] */ MatcherIndex(26),
+  /* [63] */ MatcherIndex(0),
+  /* [64] */ MatcherIndex(1),
+  /* [65] */ MatcherIndex(26),
+  /* [66] */ MatcherIndex(0),
+  /* [67] */ MatcherIndex(5),
+  /* [68] */ MatcherIndex(26),
   /* [69] */ MatcherIndex(1),
-  /* [70] */ MatcherIndex(10),
-  /* [71] */ MatcherIndex(25),
+  /* [70] */ MatcherIndex(0),
+  /* [71] */ MatcherIndex(26),
   /* [72] */ MatcherIndex(1),
-  /* [73] */ MatcherIndex(7),
-  /* [74] */ MatcherIndex(25),
-  /* [75] */ MatcherIndex(0),
-  /* [76] */ MatcherIndex(11),
-  /* [77] */ MatcherIndex(55),
-  /* [78] */ MatcherIndex(0),
-  /* [79] */ MatcherIndex(1),
-  /* [80] */ MatcherIndex(25),
-  /* [81] */ MatcherIndex(0),
-  /* [82] */ MatcherIndex(2),
-  /* [83] */ MatcherIndex(53),
-  /* [84] */ MatcherIndex(0),
-  /* [85] */ MatcherIndex(1),
-  /* [86] */ MatcherIndex(45),
+  /* [73] */ MatcherIndex(75),
+  /* [74] */ MatcherIndex(26),
+  /* [75] */ MatcherIndex(1),
+  /* [76] */ MatcherIndex(2),
+  /* [77] */ MatcherIndex(26),
+  /* [78] */ MatcherIndex(1),
+  /* [79] */ MatcherIndex(13),
+  /* [80] */ MatcherIndex(26),
+  /* [81] */ MatcherIndex(1),
+  /* [82] */ MatcherIndex(11),
+  /* [83] */ MatcherIndex(26),
+  /* [84] */ MatcherIndex(1),
+  /* [85] */ MatcherIndex(8),
+  /* [86] */ MatcherIndex(26),
   /* [87] */ MatcherIndex(0),
-  /* [88] */ MatcherIndex(1),
-  /* [89] */ MatcherIndex(46),
+  /* [88] */ MatcherIndex(12),
+  /* [89] */ MatcherIndex(57),
   /* [90] */ MatcherIndex(0),
   /* [91] */ MatcherIndex(1),
-  /* [92] */ MatcherIndex(47),
+  /* [92] */ MatcherIndex(26),
   /* [93] */ MatcherIndex(0),
-  /* [94] */ MatcherIndex(1),
-  /* [95] */ MatcherIndex(48),
+  /* [94] */ MatcherIndex(2),
+  /* [95] */ MatcherIndex(55),
   /* [96] */ MatcherIndex(0),
   /* [97] */ MatcherIndex(1),
-  /* [98] */ MatcherIndex(45),
-  /* [99] */ MatcherIndex(1),
-  /* [100] */ MatcherIndex(2),
-  /* [101] */ MatcherIndex(46),
-  /* [102] */ MatcherIndex(1),
-  /* [103] */ MatcherIndex(2),
-  /* [104] */ MatcherIndex(47),
-  /* [105] */ MatcherIndex(1),
-  /* [106] */ MatcherIndex(2),
-  /* [107] */ MatcherIndex(48),
-  /* [108] */ MatcherIndex(1),
-  /* [109] */ MatcherIndex(2),
-  /* [110] */ MatcherIndex(25),
-  /* [111] */ MatcherIndex(2),
-  /* [112] */ MatcherIndex(0),
-  /* [113] */ MatcherIndex(25),
+  /* [98] */ MatcherIndex(47),
+  /* [99] */ MatcherIndex(0),
+  /* [100] */ MatcherIndex(1),
+  /* [101] */ MatcherIndex(48),
+  /* [102] */ MatcherIndex(0),
+  /* [103] */ MatcherIndex(1),
+  /* [104] */ MatcherIndex(49),
+  /* [105] */ MatcherIndex(0),
+  /* [106] */ MatcherIndex(1),
+  /* [107] */ MatcherIndex(50),
+  /* [108] */ MatcherIndex(0),
+  /* [109] */ MatcherIndex(1),
+  /* [110] */ MatcherIndex(47),
+  /* [111] */ MatcherIndex(1),
+  /* [112] */ MatcherIndex(2),
+  /* [113] */ MatcherIndex(48),
   /* [114] */ MatcherIndex(1),
-  /* [115] */ MatcherIndex(4),
-  /* [116] */ MatcherIndex(13),
-  /* [117] */ MatcherIndex(12),
-  /* [118] */ MatcherIndex(13),
-  /* [119] */ MatcherIndex(72),
-  /* [120] */ MatcherIndex(15),
-  /* [121] */ MatcherIndex(12),
-  /* [122] */ MatcherIndex(13),
-  /* [123] */ MatcherIndex(1),
-  /* [124] */ MatcherIndex(14),
-  /* [125] */ MatcherIndex(0),
-  /* [126] */ MatcherIndex(54),
-  /* [127] */ MatcherIndex(0),
-  /* [128] */ MatcherIndex(52),
-  /* [129] */ MatcherIndex(0),
-  /* [130] */ MatcherIndex(13),
-  /* [131] */ MatcherIndex(11),
-  /* [132] */ MatcherIndex(15),
-  /* [133] */ MatcherIndex(11),
-  /* [134] */ MatcherIndex(15),
-  /* [135] */ MatcherIndex(9),
-  /* [136] */ MatcherIndex(15),
-  /* [137] */ MatcherIndex(10),
-  /* [138] */ MatcherIndex(33),
+  /* [115] */ MatcherIndex(2),
+  /* [116] */ MatcherIndex(49),
+  /* [117] */ MatcherIndex(1),
+  /* [118] */ MatcherIndex(2),
+  /* [119] */ MatcherIndex(50),
+  /* [120] */ MatcherIndex(1),
+  /* [121] */ MatcherIndex(2),
+  /* [122] */ MatcherIndex(26),
+  /* [123] */ MatcherIndex(2),
+  /* [124] */ MatcherIndex(0),
+  /* [125] */ MatcherIndex(26),
+  /* [126] */ MatcherIndex(1),
+  /* [127] */ MatcherIndex(5),
+  /* [128] */ MatcherIndex(14),
+  /* [129] */ MatcherIndex(13),
+  /* [130] */ MatcherIndex(14),
+  /* [131] */ MatcherIndex(75),
+  /* [132] */ MatcherIndex(16),
+  /* [133] */ MatcherIndex(13),
+  /* [134] */ MatcherIndex(14),
+  /* [135] */ MatcherIndex(1),
+  /* [136] */ MatcherIndex(56),
+  /* [137] */ MatcherIndex(0),
+  /* [138] */ MatcherIndex(54),
   /* [139] */ MatcherIndex(0),
-  /* [140] */ MatcherIndex(13),
-  /* [141] */ MatcherIndex(10),
-  /* [142] */ MatcherIndex(34),
-  /* [143] */ MatcherIndex(0),
-  /* [144] */ MatcherIndex(35),
-  /* [145] */ MatcherIndex(0),
-  /* [146] */ MatcherIndex(14),
-  /* [147] */ MatcherIndex(10),
-  /* [148] */ MatcherIndex(36),
+  /* [140] */ MatcherIndex(14),
+  /* [141] */ MatcherIndex(12),
+  /* [142] */ MatcherIndex(16),
+  /* [143] */ MatcherIndex(12),
+  /* [144] */ MatcherIndex(16),
+  /* [145] */ MatcherIndex(10),
+  /* [146] */ MatcherIndex(16),
+  /* [147] */ MatcherIndex(11),
+  /* [148] */ MatcherIndex(35),
   /* [149] */ MatcherIndex(0),
-  /* [150] */ MatcherIndex(37),
-  /* [151] */ MatcherIndex(0),
-  /* [152] */ MatcherIndex(38),
+  /* [150] */ MatcherIndex(14),
+  /* [151] */ MatcherIndex(11),
+  /* [152] */ MatcherIndex(36),
   /* [153] */ MatcherIndex(0),
-  /* [154] */ MatcherIndex(39),
+  /* [154] */ MatcherIndex(37),
   /* [155] */ MatcherIndex(0),
-  /* [156] */ MatcherIndex(13),
-  /* [157] */ MatcherIndex(9),
-  /* [158] */ MatcherIndex(14),
-  /* [159] */ MatcherIndex(11),
-  /* [160] */ MatcherIndex(33),
-  /* [161] */ MatcherIndex(11),
-  /* [162] */ MatcherIndex(34),
-  /* [163] */ MatcherIndex(11),
-  /* [164] */ MatcherIndex(35),
-  /* [165] */ MatcherIndex(11),
-  /* [166] */ MatcherIndex(36),
-  /* [167] */ MatcherIndex(11),
+  /* [156] */ MatcherIndex(15),
+  /* [157] */ MatcherIndex(11),
+  /* [158] */ MatcherIndex(38),
+  /* [159] */ MatcherIndex(0),
+  /* [160] */ MatcherIndex(39),
+  /* [161] */ MatcherIndex(0),
+  /* [162] */ MatcherIndex(40),
+  /* [163] */ MatcherIndex(0),
+  /* [164] */ MatcherIndex(41),
+  /* [165] */ MatcherIndex(0),
+  /* [166] */ MatcherIndex(16),
+  /* [167] */ MatcherIndex(0),
   /* [168] */ MatcherIndex(14),
-  /* [169] */ MatcherIndex(9),
-  /* [170] */ MatcherIndex(37),
-  /* [171] */ MatcherIndex(11),
-  /* [172] */ MatcherIndex(38),
-  /* [173] */ MatcherIndex(11),
-  /* [174] */ MatcherIndex(13),
-  /* [175] */ MatcherIndex(0),
-  /* [176] */ MatcherIndex(14),
-  /* [177] */ MatcherIndex(1),
-  /* [178] */ MatcherIndex(51),
-  /* [179] */ MatcherIndex(0),
-  /* [180] */ MatcherIndex(56),
-  /* [181] */ MatcherIndex(0),
-  /* [182] */ MatcherIndex(13),
-  /* [183] */ MatcherIndex(7),
-  /* [184] */ MatcherIndex(14),
-  /* [185] */ MatcherIndex(7),
-  /* [186] */ MatcherIndex(15),
-  /* [187] */ MatcherIndex(7),
+  /* [169] */ MatcherIndex(10),
+  /* [170] */ MatcherIndex(15),
+  /* [171] */ MatcherIndex(12),
+  /* [172] */ MatcherIndex(35),
+  /* [173] */ MatcherIndex(12),
+  /* [174] */ MatcherIndex(36),
+  /* [175] */ MatcherIndex(12),
+  /* [176] */ MatcherIndex(37),
+  /* [177] */ MatcherIndex(12),
+  /* [178] */ MatcherIndex(38),
+  /* [179] */ MatcherIndex(12),
+  /* [180] */ MatcherIndex(15),
+  /* [181] */ MatcherIndex(10),
+  /* [182] */ MatcherIndex(39),
+  /* [183] */ MatcherIndex(12),
+  /* [184] */ MatcherIndex(40),
+  /* [185] */ MatcherIndex(12),
+  /* [186] */ MatcherIndex(14),
+  /* [187] */ MatcherIndex(0),
   /* [188] */ MatcherIndex(15),
   /* [189] */ MatcherIndex(1),
-  /* [190] */ MatcherIndex(16),
+  /* [190] */ MatcherIndex(53),
   /* [191] */ MatcherIndex(0),
-  /* [192] */ MatcherIndex(16),
-  /* [193] */ MatcherIndex(11),
-  /* [194] */ MatcherIndex(16),
-  /* [195] */ MatcherIndex(12),
-  /* [196] */ MatcherIndex(17),
-  /* [197] */ MatcherIndex(0),
-  /* [198] */ MatcherIndex(17),
-  /* [199] */ MatcherIndex(11),
-  /* [200] */ MatcherIndex(17),
-  /* [201] */ MatcherIndex(12),
-  /* [202] */ MatcherIndex(18),
+  /* [192] */ MatcherIndex(58),
+  /* [193] */ MatcherIndex(0),
+  /* [194] */ MatcherIndex(14),
+  /* [195] */ MatcherIndex(8),
+  /* [196] */ MatcherIndex(15),
+  /* [197] */ MatcherIndex(8),
+  /* [198] */ MatcherIndex(16),
+  /* [199] */ MatcherIndex(8),
+  /* [200] */ MatcherIndex(16),
+  /* [201] */ MatcherIndex(1),
+  /* [202] */ MatcherIndex(17),
   /* [203] */ MatcherIndex(0),
-  /* [204] */ MatcherIndex(18),
-  /* [205] */ MatcherIndex(11),
-  /* [206] */ MatcherIndex(18),
-  /* [207] */ MatcherIndex(12),
-  /* [208] */ MatcherIndex(19),
+  /* [204] */ MatcherIndex(17),
+  /* [205] */ MatcherIndex(12),
+  /* [206] */ MatcherIndex(17),
+  /* [207] */ MatcherIndex(13),
+  /* [208] */ MatcherIndex(18),
   /* [209] */ MatcherIndex(0),
-  /* [210] */ MatcherIndex(19),
-  /* [211] */ MatcherIndex(11),
-  /* [212] */ MatcherIndex(19),
-  /* [213] */ MatcherIndex(12),
-  /* [214] */ MatcherIndex(20),
-  /* [215] */ MatcherIndex(0),
-  /* [216] */ MatcherIndex(20),
-  /* [217] */ MatcherIndex(11),
+  /* [210] */ MatcherIndex(18),
+  /* [211] */ MatcherIndex(12),
+  /* [212] */ MatcherIndex(18),
+  /* [213] */ MatcherIndex(13),
+  /* [214] */ MatcherIndex(19),
+  /* [215] */ MatcherIndex(12),
+  /* [216] */ MatcherIndex(19),
+  /* [217] */ MatcherIndex(13),
   /* [218] */ MatcherIndex(20),
-  /* [219] */ MatcherIndex(12),
-  /* [220] */ MatcherIndex(21),
-  /* [221] */ MatcherIndex(0),
-  /* [222] */ MatcherIndex(21),
-  /* [223] */ MatcherIndex(11),
+  /* [219] */ MatcherIndex(0),
+  /* [220] */ MatcherIndex(20),
+  /* [221] */ MatcherIndex(12),
+  /* [222] */ MatcherIndex(20),
+  /* [223] */ MatcherIndex(13),
   /* [224] */ MatcherIndex(21),
-  /* [225] */ MatcherIndex(12),
-  /* [226] */ MatcherIndex(22),
-  /* [227] */ MatcherIndex(0),
-  /* [228] */ MatcherIndex(22),
-  /* [229] */ MatcherIndex(11),
+  /* [225] */ MatcherIndex(0),
+  /* [226] */ MatcherIndex(21),
+  /* [227] */ MatcherIndex(12),
+  /* [228] */ MatcherIndex(21),
+  /* [229] */ MatcherIndex(13),
   /* [230] */ MatcherIndex(22),
-  /* [231] */ MatcherIndex(12),
-  /* [232] */ MatcherIndex(23),
-  /* [233] */ MatcherIndex(0),
-  /* [234] */ MatcherIndex(23),
-  /* [235] */ MatcherIndex(11),
+  /* [231] */ MatcherIndex(0),
+  /* [232] */ MatcherIndex(22),
+  /* [233] */ MatcherIndex(12),
+  /* [234] */ MatcherIndex(22),
+  /* [235] */ MatcherIndex(13),
   /* [236] */ MatcherIndex(23),
-  /* [237] */ MatcherIndex(12),
-  /* [238] */ MatcherIndex(24),
-  /* [239] */ MatcherIndex(0),
-  /* [240] */ MatcherIndex(24),
-  /* [241] */ MatcherIndex(11),
+  /* [237] */ MatcherIndex(0),
+  /* [238] */ MatcherIndex(23),
+  /* [239] */ MatcherIndex(12),
+  /* [240] */ MatcherIndex(23),
+  /* [241] */ MatcherIndex(13),
   /* [242] */ MatcherIndex(24),
-  /* [243] */ MatcherIndex(12),
-  /* [244] */ MatcherIndex(50),
-  /* [245] */ MatcherIndex(0),
-  /* [246] */ MatcherIndex(64),
-  /* [247] */ MatcherIndex(68),
-  /* [248] */ MatcherIndex(76),
-  /* [249] */ MatcherIndex(70),
-  /* [250] */ MatcherIndex(57),
-  /* [251] */ MatcherIndex(65),
-  /* [252] */ MatcherIndex(40),
-  /* [253] */ MatcherIndex(41),
-  /* [254] */ MatcherIndex(42),
-  /* [255] */ MatcherIndex(43),
-  /* [256] */ MatcherIndex(44),
-  /* [257] */ MatcherIndex(49),
-  /* [258] */ MatcherIndex(31),
-  /* [259] */ MatcherIndex(32),
-  /* [260] */ MatcherIndex(5),
-  /* [261] */ MatcherIndex(6),
-  /* [262] */ MatcherIndex(71),
-  /* [263] */ MatcherIndex(69),
-  /* [264] */ MatcherIndex(61),
-  /* [265] */ MatcherIndex(62),
-  /* [266] */ MatcherIndex(59),
-  /* [267] */ MatcherIndex(60),
-  /* [268] */ MatcherIndex(63),
-  /* [269] */ MatcherIndex(58),
-  /* [270] */ MatcherIndex(75),
+  /* [243] */ MatcherIndex(0),
+  /* [244] */ MatcherIndex(24),
+  /* [245] */ MatcherIndex(12),
+  /* [246] */ MatcherIndex(24),
+  /* [247] */ MatcherIndex(13),
+  /* [248] */ MatcherIndex(25),
+  /* [249] */ MatcherIndex(0),
+  /* [250] */ MatcherIndex(25),
+  /* [251] */ MatcherIndex(12),
+  /* [252] */ MatcherIndex(25),
+  /* [253] */ MatcherIndex(13),
+  /* [254] */ MatcherIndex(52),
+  /* [255] */ MatcherIndex(0),
+  /* [256] */ MatcherIndex(67),
+  /* [257] */ MatcherIndex(71),
+  /* [258] */ MatcherIndex(79),
+  /* [259] */ MatcherIndex(73),
+  /* [260] */ MatcherIndex(60),
+  /* [261] */ MatcherIndex(68),
+  /* [262] */ MatcherIndex(42),
+  /* [263] */ MatcherIndex(43),
+  /* [264] */ MatcherIndex(44),
+  /* [265] */ MatcherIndex(45),
+  /* [266] */ MatcherIndex(46),
+  /* [267] */ MatcherIndex(51),
+  /* [268] */ MatcherIndex(33),
+  /* [269] */ MatcherIndex(34),
+  /* [270] */ MatcherIndex(9),
+  /* [271] */ MatcherIndex(74),
+  /* [272] */ MatcherIndex(72),
+  /* [273] */ MatcherIndex(64),
+  /* [274] */ MatcherIndex(65),
+  /* [275] */ MatcherIndex(62),
+  /* [276] */ MatcherIndex(63),
+  /* [277] */ MatcherIndex(66),
+  /* [278] */ MatcherIndex(61),
+  /* [279] */ MatcherIndex(78),
 };
 
 static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -2179,1757 +2328,1757 @@
   {
     /* [0] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* matcher_indices */ MatcherIndicesIndex(12),
   },
   {
     /* [1] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [2] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [3] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [4] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [5] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [6] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [7] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [8] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [9] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [10] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [11] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [12] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [13] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [14] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [15] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [16] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [17] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(70),
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [18] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(70),
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [19] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(164),
+    /* matcher_indices */ MatcherIndicesIndex(176),
   },
   {
     /* [20] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [21] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [22] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [23] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [24] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [25] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [26] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [27] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(144),
+    /* matcher_indices */ MatcherIndicesIndex(154),
   },
   {
     /* [28] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [29] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [30] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* matcher_indices */ MatcherIndicesIndex(20),
   },
   {
     /* [31] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [32] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(253),
+    /* matcher_indices */ MatcherIndicesIndex(263),
   },
   {
     /* [33] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(259),
+    /* matcher_indices */ MatcherIndicesIndex(269),
   },
   {
     /* [34] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [35] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [36] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [37] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [38] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(164),
+    /* matcher_indices */ MatcherIndicesIndex(176),
   },
   {
     /* [39] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [40] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [41] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [42] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [43] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [44] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(162),
+    /* matcher_indices */ MatcherIndicesIndex(174),
   },
   {
     /* [45] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [46] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [47] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [48] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [49] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [50] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(166),
+    /* matcher_indices */ MatcherIndicesIndex(178),
   },
   {
     /* [51] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [52] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [53] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [54] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [55] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(168),
+    /* matcher_indices */ MatcherIndicesIndex(180),
   },
   {
     /* [56] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(172),
+    /* matcher_indices */ MatcherIndicesIndex(184),
   },
   {
     /* [57] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [58] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [59] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [60] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [61] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [62] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(164),
+    /* matcher_indices */ MatcherIndicesIndex(176),
   },
   {
     /* [63] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [64] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [65] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [66] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [67] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [68] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(253),
+    /* matcher_indices */ MatcherIndicesIndex(263),
   },
   {
     /* [69] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [70] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [71] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [72] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [73] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [74] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [75] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* matcher_indices */ MatcherIndicesIndex(152),
   },
   {
     /* [76] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [77] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [78] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [79] */
     /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [80] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(152),
+    /* matcher_indices */ MatcherIndicesIndex(162),
   },
   {
     /* [81] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [82] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [83] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* matcher_indices */ MatcherIndicesIndex(20),
   },
   {
     /* [84] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(253),
+    /* matcher_indices */ MatcherIndicesIndex(263),
   },
   {
     /* [85] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [86] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [87] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [88] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [89] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(252),
+    /* matcher_indices */ MatcherIndicesIndex(262),
   },
   {
     /* [90] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(259),
+    /* matcher_indices */ MatcherIndicesIndex(269),
   },
   {
     /* [91] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [92] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [93] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [94] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(255),
+    /* matcher_indices */ MatcherIndicesIndex(265),
   },
   {
     /* [95] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(259),
+    /* matcher_indices */ MatcherIndicesIndex(269),
   },
   {
     /* [96] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [97] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [98] */
     /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [99] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(164),
+    /* matcher_indices */ MatcherIndicesIndex(176),
   },
   {
     /* [100] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [101] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [102] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [103] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [104] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(162),
+    /* matcher_indices */ MatcherIndicesIndex(174),
   },
   {
     /* [105] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [106] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [107] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [108] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [109] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(166),
+    /* matcher_indices */ MatcherIndicesIndex(178),
   },
   {
     /* [110] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [111] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [112] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [113] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(168),
+    /* matcher_indices */ MatcherIndicesIndex(180),
   },
   {
     /* [114] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(172),
+    /* matcher_indices */ MatcherIndicesIndex(184),
   },
   {
     /* [115] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [116] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [117] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [118] */
     /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [119] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(170),
+    /* matcher_indices */ MatcherIndicesIndex(182),
   },
   {
     /* [120] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [121] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [122] */
     /* usage */ core::ParameterUsage::kDdx,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [123] */
     /* usage */ core::ParameterUsage::kDdy,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [124] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(162),
+    /* matcher_indices */ MatcherIndicesIndex(174),
   },
   {
     /* [125] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [126] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [127] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [128] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [129] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(166),
+    /* matcher_indices */ MatcherIndicesIndex(178),
   },
   {
     /* [130] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [131] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [132] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [133] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(168),
+    /* matcher_indices */ MatcherIndicesIndex(180),
   },
   {
     /* [134] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(172),
+    /* matcher_indices */ MatcherIndicesIndex(184),
   },
   {
     /* [135] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [136] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [137] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [138] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
     /* [139] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(252),
+    /* matcher_indices */ MatcherIndicesIndex(262),
   },
   {
     /* [140] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [141] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
     /* [142] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [143] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
     /* [144] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(255),
+    /* matcher_indices */ MatcherIndicesIndex(265),
   },
   {
     /* [145] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
     /* [146] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
     /* [147] */
     /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [148] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [149] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
+    /* matcher_indices */ MatcherIndicesIndex(0),
   },
   {
     /* [150] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [151] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(70),
+    /* matcher_indices */ MatcherIndicesIndex(17),
   },
   {
     /* [152] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(70),
+    /* matcher_indices */ MatcherIndicesIndex(67),
   },
   {
     /* [153] */
-    /* usage */ core::ParameterUsage::kComponent,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [154] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(150),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
   },
   {
     /* [155] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
   },
   {
     /* [156] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [157] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(252),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(82),
   },
   {
     /* [158] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [159] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [160] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
-  },
-  {
-    /* [161] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(254),
-  },
-  {
-    /* [162] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(259),
-  },
-  {
-    /* [163] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
-  },
-  {
-    /* [164] */
-    /* usage */ core::ParameterUsage::kDepthRef,
-    /* matcher_indices */ MatcherIndicesIndex(76),
-  },
-  {
-    /* [165] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(162),
-  },
-  {
-    /* [166] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
-  },
-  {
-    /* [167] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
-  },
-  {
-    /* [168] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(156),
-  },
-  {
-    /* [169] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(166),
-  },
-  {
-    /* [170] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
-  },
-  {
-    /* [171] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
-  },
-  {
-    /* [172] */
-    /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(168),
-  },
-  {
-    /* [173] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(170),
-  },
-  {
-    /* [174] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
-  },
-  {
-    /* [175] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
-  },
-  {
-    /* [176] */
-    /* usage */ core::ParameterUsage::kBias,
-    /* matcher_indices */ MatcherIndicesIndex(76),
-  },
-  {
-    /* [177] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(170),
-  },
-  {
-    /* [178] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
-  },
-  {
-    /* [179] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
-  },
-  {
-    /* [180] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(76),
-  },
-  {
-    /* [181] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(254),
-  },
-  {
-    /* [182] */
-    /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
-  },
-  {
-    /* [183] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(158),
-  },
-  {
-    /* [184] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [185] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(104),
-  },
-  {
-    /* [186] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [187] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(40),
-  },
-  {
-    /* [188] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(132),
-  },
-  {
-    /* [189] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(104),
-  },
-  {
-    /* [190] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [191] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(40),
-  },
-  {
-    /* [192] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(134),
-  },
-  {
-    /* [193] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(104),
-  },
-  {
-    /* [194] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [195] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(40),
-  },
-  {
-    /* [196] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(136),
-  },
-  {
-    /* [197] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(144),
-  },
-  {
-    /* [198] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(122),
-  },
-  {
-    /* [199] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(17),
-  },
-  {
-    /* [200] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(40),
-  },
-  {
-    /* [201] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(253),
-  },
-  {
-    /* [202] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [203] */
-    /* usage */ core::ParameterUsage::kArrayIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [204] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(17),
-  },
-  {
-    /* [205] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [206] */
-    /* usage */ core::ParameterUsage::kY,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [207] */
-    /* usage */ core::ParameterUsage::kZ,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [208] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [209] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [210] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [211] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [212] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [213] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [214] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [215] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [216] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [217] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(23),
-  },
-  {
-    /* [218] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(23),
-  },
-  {
-    /* [219] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(23),
-  },
-  {
-    /* [220] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(23),
-  },
-  {
-    /* [221] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
-  },
-  {
-    /* [222] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
-  },
-  {
-    /* [223] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
-  },
-  {
-    /* [224] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(55),
-  },
-  {
-    /* [225] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(55),
-  },
-  {
-    /* [226] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [227] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [228] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [229] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [230] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [231] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [232] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(55),
-  },
-  {
-    /* [233] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [234] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [235] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(53),
-  },
-  {
-    /* [236] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(53),
-  },
-  {
-    /* [237] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(160),
   },
   {
-    /* [238] */
+    /* [160] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
-    /* [239] */
+    /* [161] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
-    /* [240] */
+    /* [162] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(257),
+    /* matcher_indices */ MatcherIndicesIndex(262),
   },
   {
-    /* [241] */
+    /* [163] */
     /* usage */ core::ParameterUsage::kSampler,
-    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
-    /* [242] */
+    /* [164] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
-    /* [243] */
+    /* [165] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(168),
+  },
+  {
+    /* [166] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(264),
   },
   {
-    /* [244] */
+    /* [167] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(269),
+  },
+  {
+    /* [168] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
-    /* [245] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(132),
+    /* [169] */
+    /* usage */ core::ParameterUsage::kDepthRef,
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
-    /* [246] */
+    /* [170] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [247] */
-    /* usage */ core::ParameterUsage::kCoords,
     /* matcher_indices */ MatcherIndicesIndex(174),
   },
   {
-    /* [248] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(132),
+    /* [171] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
   },
   {
-    /* [249] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(107),
-  },
-  {
-    /* [250] */
+    /* [172] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(124),
+    /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
-    /* [251] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(132),
+    /* [173] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(168),
   },
   {
-    /* [252] */
+    /* [174] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(98),
+    /* matcher_indices */ MatcherIndicesIndex(178),
   },
   {
-    /* [253] */
+    /* [175] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [176] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
-    /* [254] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(134),
+    /* [177] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(180),
   },
   {
-    /* [255] */
+    /* [178] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(101),
+    /* matcher_indices */ MatcherIndicesIndex(182),
   },
   {
-    /* [256] */
+    /* [179] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [180] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
-    /* [257] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(134),
+    /* [181] */
+    /* usage */ core::ParameterUsage::kBias,
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
-    /* [258] */
+    /* [182] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(107),
+    /* matcher_indices */ MatcherIndicesIndex(182),
   },
   {
-    /* [259] */
+    /* [183] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [184] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(124),
+    /* matcher_indices */ MatcherIndicesIndex(170),
   },
   {
-    /* [260] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(134),
-  },
-  {
-    /* [261] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(98),
-  },
-  {
-    /* [262] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [263] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(136),
-  },
-  {
-    /* [264] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(101),
-  },
-  {
-    /* [265] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [266] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(136),
-  },
-  {
-    /* [267] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(107),
-  },
-  {
-    /* [268] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [269] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(136),
-  },
-  {
-    /* [270] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(138),
-  },
-  {
-    /* [271] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [272] */
+    /* [185] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* matcher_indices */ MatcherIndicesIndex(88),
   },
   {
-    /* [273] */
+    /* [186] */
     /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(264),
+  },
+  {
+    /* [187] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [188] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(170),
+  },
+  {
+    /* [189] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [190] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(116),
+  },
+  {
+    /* [191] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [192] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [193] */
+    /* usage */ core::ParameterUsage::kValue,
     /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
-    /* [274] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(122),
-  },
-  {
-    /* [275] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(17),
-  },
-  {
-    /* [276] */
+    /* [194] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
+    /* matcher_indices */ MatcherIndicesIndex(116),
   },
   {
-    /* [277] */
+    /* [195] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(176),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [278] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* [196] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(21),
   },
   {
-    /* [279] */
+    /* [197] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(144),
+  },
+  {
+    /* [198] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(116),
+  },
+  {
+    /* [199] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [200] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(21),
+  },
+  {
+    /* [201] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(146),
+  },
+  {
+    /* [202] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(154),
   },
   {
-    /* [280] */
+    /* [203] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(122),
+    /* matcher_indices */ MatcherIndicesIndex(134),
   },
   {
-    /* [281] */
-    /* usage */ core::ParameterUsage::kSampleIndex,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* [204] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
+    /* matcher_indices */ MatcherIndicesIndex(20),
   },
   {
-    /* [282] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(252),
-  },
-  {
-    /* [283] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [284] */
+    /* [205] */
     /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(21),
   },
   {
-    /* [285] */
+    /* [206] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(256),
+    /* matcher_indices */ MatcherIndicesIndex(263),
   },
   {
-    /* [286] */
+    /* [207] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [287] */
-    /* usage */ core::ParameterUsage::kSampleIndex,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [288] */
-    /* usage */ core::ParameterUsage::kXy,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [289] */
-    /* usage */ core::ParameterUsage::kZ,
+    /* [208] */
+    /* usage */ core::ParameterUsage::kArrayIndex,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
-    /* [290] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* [209] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(20),
   },
   {
-    /* [291] */
+    /* [210] */
     /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
-    /* [292] */
-    /* usage */ core::ParameterUsage::kYz,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [293] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [294] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [295] */
+    /* [211] */
     /* usage */ core::ParameterUsage::kY,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
-    /* [296] */
-    /* usage */ core::ParameterUsage::kZw,
-    /* matcher_indices */ MatcherIndicesIndex(174),
+    /* [212] */
+    /* usage */ core::ParameterUsage::kZ,
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
-    /* [297] */
+    /* [213] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [214] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [298] */
+    /* [215] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(4),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [299] */
+    /* [216] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(50),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [300] */
+    /* [217] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(80),
+    /* matcher_indices */ MatcherIndicesIndex(186),
   },
   {
-    /* [301] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(138),
-  },
-  {
-    /* [302] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [303] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(142),
-  },
-  {
-    /* [304] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [305] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(144),
-  },
-  {
-    /* [306] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [307] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
-  },
-  {
-    /* [308] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [309] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(150),
-  },
-  {
-    /* [310] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [311] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(152),
-  },
-  {
-    /* [312] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(4),
-  },
-  {
-    /* [313] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(252),
-  },
-  {
-    /* [314] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [315] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(253),
-  },
-  {
-    /* [316] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [317] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(254),
-  },
-  {
-    /* [318] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [319] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(255),
-  },
-  {
-    /* [320] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [321] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(257),
-  },
-  {
-    /* [322] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [323] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [324] */
-    /* usage */ core::ParameterUsage::kSourceLaneIndex,
-    /* matcher_indices */ MatcherIndicesIndex(248),
-  },
-  {
-    /* [325] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [326] */
-    /* usage */ core::ParameterUsage::kSourceLaneIndex,
-    /* matcher_indices */ MatcherIndicesIndex(248),
-  },
-  {
-    /* [327] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [328] */
-    /* usage */ core::ParameterUsage::kMask,
-    /* matcher_indices */ MatcherIndicesIndex(70),
-  },
-  {
-    /* [329] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [330] */
-    /* usage */ core::ParameterUsage::kMask,
-    /* matcher_indices */ MatcherIndicesIndex(70),
-  },
-  {
-    /* [331] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [332] */
-    /* usage */ core::ParameterUsage::kDelta,
-    /* matcher_indices */ MatcherIndicesIndex(70),
-  },
-  {
-    /* [333] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [334] */
-    /* usage */ core::ParameterUsage::kDelta,
-    /* matcher_indices */ MatcherIndicesIndex(70),
-  },
-  {
-    /* [335] */
-    /* usage */ core::ParameterUsage::kE,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [336] */
-    /* usage */ core::ParameterUsage::kId,
-    /* matcher_indices */ MatcherIndicesIndex(248),
-  },
-  {
-    /* [337] */
-    /* usage */ core::ParameterUsage::kE,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [338] */
-    /* usage */ core::ParameterUsage::kId,
-    /* matcher_indices */ MatcherIndicesIndex(248),
-  },
-  {
-    /* [339] */
+    /* [218] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
+    /* matcher_indices */ MatcherIndicesIndex(5),
   },
   {
-    /* [340] */
+    /* [219] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(5),
   },
   {
-    /* [341] */
+    /* [220] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
+    /* matcher_indices */ MatcherIndicesIndex(5),
   },
   {
-    /* [342] */
+    /* [221] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [222] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(166),
+  },
+  {
+    /* [223] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(166),
+  },
+  {
+    /* [224] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(166),
+  },
+  {
+    /* [225] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(166),
+  },
+  {
+    /* [226] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(68),
   },
   {
-    /* [343] */
+    /* [227] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(34),
+    /* matcher_indices */ MatcherIndicesIndex(68),
   },
   {
-    /* [344] */
+    /* [228] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(34),
+    /* matcher_indices */ MatcherIndicesIndex(68),
   },
   {
-    /* [345] */
+    /* [229] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(67),
+  },
+  {
+    /* [230] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(67),
+  },
+  {
+    /* [231] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [232] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [233] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [234] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
+    /* [235] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [236] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [237] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(67),
+  },
+  {
+    /* [238] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [239] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [240] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(65),
+  },
+  {
+    /* [241] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(65),
+  },
+  {
+    /* [242] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(172),
+  },
+  {
+    /* [243] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [244] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(88),
+  },
+  {
+    /* [245] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(267),
+  },
+  {
+    /* [246] */
+    /* usage */ core::ParameterUsage::kSampler,
+    /* matcher_indices */ MatcherIndicesIndex(268),
+  },
+  {
+    /* [247] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(140),
+  },
+  {
+    /* [248] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(110),
+  },
+  {
+    /* [249] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [250] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(142),
+  },
+  {
+    /* [251] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [252] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [253] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(142),
+  },
+  {
+    /* [254] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [255] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [256] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(142),
+  },
+  {
+    /* [257] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(110),
+  },
+  {
+    /* [258] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [259] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(144),
+  },
+  {
+    /* [260] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [261] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [262] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(144),
+  },
+  {
+    /* [263] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [264] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [265] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(144),
+  },
+  {
+    /* [266] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(110),
+  },
+  {
+    /* [267] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [268] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(146),
+  },
+  {
+    /* [269] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [270] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [271] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(146),
+  },
+  {
+    /* [272] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [273] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [274] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(146),
+  },
+  {
+    /* [275] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(148),
+  },
+  {
+    /* [276] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [277] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(20),
+  },
+  {
+    /* [278] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(152),
+  },
+  {
+    /* [279] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(134),
+  },
+  {
+    /* [280] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(20),
+  },
+  {
+    /* [281] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(158),
+  },
+  {
+    /* [282] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(188),
+  },
+  {
+    /* [283] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(20),
+  },
+  {
+    /* [284] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(164),
+  },
+  {
+    /* [285] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(134),
+  },
+  {
+    /* [286] */
+    /* usage */ core::ParameterUsage::kSampleIndex,
+    /* matcher_indices */ MatcherIndicesIndex(20),
+  },
+  {
+    /* [287] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(262),
+  },
+  {
+    /* [288] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [289] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [290] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(266),
+  },
+  {
+    /* [291] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [292] */
+    /* usage */ core::ParameterUsage::kSampleIndex,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [293] */
+    /* usage */ core::ParameterUsage::kXy,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [294] */
+    /* usage */ core::ParameterUsage::kZ,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [295] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [296] */
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [297] */
+    /* usage */ core::ParameterUsage::kYz,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [298] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [299] */
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [300] */
+    /* usage */ core::ParameterUsage::kY,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [301] */
+    /* usage */ core::ParameterUsage::kZw,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [302] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [303] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [304] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [305] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(92),
+  },
+  {
+    /* [306] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(148),
+  },
+  {
+    /* [307] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [308] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(152),
+  },
+  {
+    /* [309] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [310] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(154),
+  },
+  {
+    /* [311] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [312] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(158),
+  },
+  {
+    /* [313] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [314] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(160),
+  },
+  {
+    /* [315] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [316] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(162),
+  },
+  {
+    /* [317] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [318] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(262),
+  },
+  {
+    /* [319] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [320] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(263),
+  },
+  {
+    /* [321] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [322] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(264),
+  },
+  {
+    /* [323] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [324] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(265),
+  },
+  {
+    /* [325] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [326] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(267),
+  },
+  {
+    /* [327] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [328] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [329] */
+    /* usage */ core::ParameterUsage::kSourceLaneIndex,
+    /* matcher_indices */ MatcherIndicesIndex(258),
+  },
+  {
+    /* [330] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [331] */
+    /* usage */ core::ParameterUsage::kSourceLaneIndex,
+    /* matcher_indices */ MatcherIndicesIndex(258),
+  },
+  {
+    /* [332] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [333] */
+    /* usage */ core::ParameterUsage::kMask,
+    /* matcher_indices */ MatcherIndicesIndex(82),
+  },
+  {
+    /* [334] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [335] */
+    /* usage */ core::ParameterUsage::kMask,
+    /* matcher_indices */ MatcherIndicesIndex(82),
+  },
+  {
+    /* [336] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [337] */
+    /* usage */ core::ParameterUsage::kDelta,
+    /* matcher_indices */ MatcherIndicesIndex(82),
+  },
+  {
+    /* [338] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [339] */
+    /* usage */ core::ParameterUsage::kDelta,
+    /* matcher_indices */ MatcherIndicesIndex(82),
+  },
+  {
+    /* [340] */
+    /* usage */ core::ParameterUsage::kE,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [341] */
+    /* usage */ core::ParameterUsage::kId,
+    /* matcher_indices */ MatcherIndicesIndex(258),
+  },
+  {
+    /* [342] */
+    /* usage */ core::ParameterUsage::kE,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [343] */
+    /* usage */ core::ParameterUsage::kId,
+    /* matcher_indices */ MatcherIndicesIndex(258),
+  },
+  {
+    /* [344] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(68),
+  },
+  {
+    /* [345] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
     /* [346] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(34),
+    /* matcher_indices */ MatcherIndicesIndex(68),
   },
   {
     /* [347] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(56),
+    /* matcher_indices */ MatcherIndicesIndex(80),
   },
   {
     /* [348] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(110),
+    /* matcher_indices */ MatcherIndicesIndex(46),
   },
   {
     /* [349] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(34),
+    /* matcher_indices */ MatcherIndicesIndex(46),
   },
   {
     /* [350] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(42),
+    /* matcher_indices */ MatcherIndicesIndex(6),
   },
   {
     /* [351] */
@@ -3938,233 +4087,233 @@
   },
   {
     /* [352] */
-    /* usage */ core::ParameterUsage::kXy,
-    /* matcher_indices */ MatcherIndicesIndex(174),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(68),
   },
   {
     /* [353] */
-    /* usage */ core::ParameterUsage::kZw,
-    /* matcher_indices */ MatcherIndicesIndex(174),
-  },
-  {
-    /* [354] */
-    /* usage */ core::ParameterUsage::kXyz,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [355] */
-    /* usage */ core::ParameterUsage::kW,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [356] */
-    /* usage */ core::ParameterUsage::kX,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [357] */
-    /* usage */ core::ParameterUsage::kZyw,
-    /* matcher_indices */ MatcherIndicesIndex(124),
-  },
-  {
-    /* [358] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(0),
-  },
-  {
-    /* [359] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(67),
-  },
-  {
-    /* [360] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(62),
-  },
-  {
-    /* [361] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(65),
-  },
-  {
-    /* [362] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(73),
-  },
-  {
-    /* [363] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(71),
-  },
-  {
-    /* [364] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(116),
-  },
-  {
-    /* [365] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(120),
-  },
-  {
-    /* [366] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(122),
   },
   {
-    /* [367] */
+    /* [354] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(46),
   },
   {
-    /* [368] */
+    /* [355] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(54),
   },
   {
-    /* [369] */
+    /* [356] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(58),
+  },
+  {
+    /* [357] */
+    /* usage */ core::ParameterUsage::kXy,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [358] */
+    /* usage */ core::ParameterUsage::kZw,
+    /* matcher_indices */ MatcherIndicesIndex(186),
+  },
+  {
+    /* [359] */
+    /* usage */ core::ParameterUsage::kXyz,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [360] */
+    /* usage */ core::ParameterUsage::kW,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [361] */
+    /* usage */ core::ParameterUsage::kX,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [362] */
+    /* usage */ core::ParameterUsage::kZyw,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [363] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(7),
+  },
+  {
+    /* [364] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(16),
+  },
+  {
+    /* [365] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(74),
   },
   {
-    /* [370] */
+    /* [366] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(130),
+    /* matcher_indices */ MatcherIndicesIndex(77),
   },
   {
-    /* [371] */
+    /* [367] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(85),
+  },
+  {
+    /* [368] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(83),
+  },
+  {
+    /* [369] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(128),
+  },
+  {
+    /* [370] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(132),
   },
   {
-    /* [372] */
+    /* [371] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(134),
   },
   {
-    /* [373] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(136),
-  },
-  {
-    /* [374] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(18),
-  },
-  {
-    /* [375] */
+    /* [372] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(22),
   },
   {
-    /* [376] */
-    /* usage */ core::ParameterUsage::kTexture,
+    /* [373] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(88),
+  },
+  {
+    /* [374] */
+    /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(86),
   },
   {
+    /* [375] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(140),
+  },
+  {
+    /* [376] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(142),
+  },
+  {
     /* [377] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(89),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(144),
   },
   {
     /* [378] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(92),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(146),
   },
   {
     /* [379] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(95),
-  },
-  {
-    /* [380] */
-    /* usage */ core::ParameterUsage::kInputAttachment,
-    /* matcher_indices */ MatcherIndicesIndex(178),
-  },
-  {
-    /* [381] */
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(30),
   },
   {
-    /* [382] */
+    /* [380] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(26),
+    /* matcher_indices */ MatcherIndicesIndex(34),
+  },
+  {
+    /* [381] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(98),
+  },
+  {
+    /* [382] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(101),
   },
   {
     /* [383] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(104),
   },
   {
     /* [384] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(176),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(107),
   },
   {
     /* [385] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(188),
+    /* usage */ core::ParameterUsage::kInputAttachment,
+    /* matcher_indices */ MatcherIndicesIndex(190),
   },
   {
     /* [386] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(190),
+    /* matcher_indices */ MatcherIndicesIndex(42),
   },
   {
     /* [387] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(192),
+    /* matcher_indices */ MatcherIndicesIndex(38),
   },
   {
     /* [388] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(194),
+    /* matcher_indices */ MatcherIndicesIndex(145),
   },
   {
     /* [389] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(196),
+    /* matcher_indices */ MatcherIndicesIndex(188),
   },
   {
     /* [390] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(198),
+    /* matcher_indices */ MatcherIndicesIndex(200),
   },
   {
     /* [391] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(200),
+    /* matcher_indices */ MatcherIndicesIndex(202),
   },
   {
     /* [392] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(202),
+    /* matcher_indices */ MatcherIndicesIndex(204),
   },
   {
     /* [393] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(204),
+    /* matcher_indices */ MatcherIndicesIndex(206),
   },
   {
     /* [394] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(206),
+    /* matcher_indices */ MatcherIndicesIndex(208),
   },
   {
     /* [395] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(208),
+    /* matcher_indices */ MatcherIndicesIndex(210),
   },
   {
     /* [396] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(210),
+    /* matcher_indices */ MatcherIndicesIndex(212),
   },
   {
     /* [397] */
     /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(212),
+    /* matcher_indices */ MatcherIndicesIndex(35),
   },
   {
     /* [398] */
@@ -4241,6 +4390,31 @@
     /* usage */ core::ParameterUsage::kNone,
     /* matcher_indices */ MatcherIndicesIndex(242),
   },
+  {
+    /* [413] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(244),
+  },
+  {
+    /* [414] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(246),
+  },
+  {
+    /* [415] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(248),
+  },
+  {
+    /* [416] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(250),
+  },
+  {
+    /* [417] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(252),
+  },
 };
 
 static_assert(ParameterIndex::CanIndex(kParameters),
@@ -4249,321 +4423,321 @@
 constexpr TemplateInfo kTemplates[] = {
   {
     /* [0] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [1] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [2] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(55),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [3] */
-    /* name */ "W",
-    /* matcher_indices */ MatcherIndicesIndex(76),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [4] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [5] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [6] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [7] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(260),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [8] */
-    /* name */ "W",
-    /* matcher_indices */ MatcherIndicesIndex(76),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [9] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [10] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [11] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(261),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [12] */
-    /* name */ "W",
-    /* matcher_indices */ MatcherIndicesIndex(76),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [13] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [14] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [15] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [16] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [17] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [18] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [19] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(55),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [20] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(73),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [21] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [22] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [23] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(260),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [24] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(73),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [25] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [26] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [27] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(261),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [28] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(73),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [29] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [30] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [31] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(55),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [32] */
-    /* name */ "RW",
-    /* matcher_indices */ MatcherIndicesIndex(9),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [33] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [34] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [35] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(260),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [36] */
-    /* name */ "RW",
-    /* matcher_indices */ MatcherIndicesIndex(9),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [37] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [38] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [39] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(261),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [40] */
-    /* name */ "RW",
-    /* matcher_indices */ MatcherIndicesIndex(9),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [41] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [42] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(247),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [43] */
     /* name */ "K",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [44] */
+    /* [1] */
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(271),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [2] */
     /* name */ "C",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [45] */
+    /* [3] */
     /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
+    /* [4] */
+    /* name */ "AC",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [5] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [6] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(85),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [7] */
+    /* name */ "W",
+    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [8] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [9] */
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [10] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [11] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(270),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [12] */
+    /* name */ "W",
+    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [13] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [14] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [15] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [16] */
+    /* name */ "W",
+    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [17] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [18] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [19] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [20] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [21] */
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [22] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [23] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(85),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [24] */
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(82),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [25] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [26] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [27] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(270),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [28] */
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(82),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [29] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [30] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [31] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [32] */
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(82),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [33] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [34] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [35] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(85),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [36] */
+    /* name */ "RW",
+    /* matcher_indices */ MatcherIndicesIndex(16),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [37] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [38] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [39] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(270),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [40] */
+    /* name */ "RW",
+    /* matcher_indices */ MatcherIndicesIndex(16),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [41] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [42] */
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [43] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [44] */
+    /* name */ "RW",
+    /* matcher_indices */ MatcherIndicesIndex(16),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [45] */
+    /* name */ "A",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
     /* [46] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(59),
+    /* matcher_indices */ MatcherIndicesIndex(257),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [47] */
-    /* name */ "N",
+    /* name */ "K",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [48] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [49] */
-    /* name */ "N",
+    /* name */ "R",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [50] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(247),
+    /* matcher_indices */ MatcherIndicesIndex(71),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [51] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(249),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [52] */
-    /* name */ "M",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [53] */
@@ -4574,14 +4748,14 @@
   {
     /* [54] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(247),
+    /* matcher_indices */ MatcherIndicesIndex(257),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [55] */
-    /* name */ "N",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(259),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [56] */
@@ -4591,170 +4765,170 @@
   },
   {
     /* [57] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [58] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(257),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [59] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [60] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "M",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [61] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(248),
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(73),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [62] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(248),
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [63] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [64] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* matcher_indices */ MatcherIndicesIndex(73),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [65] */
-    /* name */ "A",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "C",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [66] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(247),
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(258),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [67] */
-    /* name */ "C",
+    /* name */ "S",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [68] */
-    /* name */ "R",
+    /* name */ "T",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [69] */
-    /* name */ "N",
+    /* name */ "A",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [70] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(246),
+    /* matcher_indices */ MatcherIndicesIndex(257),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [71] */
-    /* name */ "N",
+    /* name */ "C",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [72] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [73] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(116),
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [74] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* matcher_indices */ MatcherIndicesIndex(256),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [75] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [76] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* matcher_indices */ MatcherIndicesIndex(258),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [77] */
-    /* name */ "W",
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(1),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [78] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [79] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(82),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [80] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(65),
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [81] */
-    /* name */ "N",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* name */ "W",
+    /* matcher_indices */ MatcherIndicesIndex(5),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [82] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(250),
+    /* matcher_indices */ MatcherIndicesIndex(73),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [83] */
-    /* name */ "N",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [84] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(251),
+    /* matcher_indices */ MatcherIndicesIndex(77),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -4766,199 +4940,223 @@
   {
     /* [86] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(262),
+    /* matcher_indices */ MatcherIndicesIndex(260),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [87] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(68),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [88] */
     /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [89] */
+    /* [88] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(116),
+    /* matcher_indices */ MatcherIndicesIndex(261),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
+    /* [89] */
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
     /* [90] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(61),
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(271),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [91] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(120),
+    /* matcher_indices */ MatcherIndicesIndex(80),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [92] */
-    /* name */ "S",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [93] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(61),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [94] */
-    /* name */ "L",
-    /* matcher_indices */ MatcherIndicesIndex(248),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [95] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [96] */
-    /* name */ "R",
-    /* matcher_indices */ MatcherIndicesIndex(73),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [97] */
-    /* name */ "F",
-    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [98] */
-    /* name */ "W",
-    /* matcher_indices */ MatcherIndicesIndex(76),
-    /* kind */ TemplateInfo::Kind::kNumber,
-  },
-  {
-    /* [99] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(263),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [100] */
     /* name */ "N",
     /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
-    /* [101] */
+    /* [93] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(76),
+    /* matcher_indices */ MatcherIndicesIndex(128),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
-    /* [102] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(266),
+    /* [94] */
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(73),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
+    /* [95] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(132),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [96] */
+    /* name */ "S",
+    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [97] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(73),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [98] */
+    /* name */ "L",
+    /* matcher_indices */ MatcherIndicesIndex(258),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [99] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [100] */
+    /* name */ "R",
+    /* matcher_indices */ MatcherIndicesIndex(82),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [101] */
+    /* name */ "F",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
+    /* [102] */
+    /* name */ "W",
+    /* matcher_indices */ MatcherIndicesIndex(5),
+    /* kind */ TemplateInfo::Kind::kNumber,
+  },
+  {
     /* [103] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(67),
+    /* matcher_indices */ MatcherIndicesIndex(272),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [104] */
-    /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(267),
-    /* kind */ TemplateInfo::Kind::kType,
+    /* name */ "N",
+    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* kind */ TemplateInfo::Kind::kNumber,
   },
   {
     /* [105] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(9),
+    /* matcher_indices */ MatcherIndicesIndex(88),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [106] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(264),
+    /* matcher_indices */ MatcherIndicesIndex(275),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [107] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(70),
+    /* matcher_indices */ MatcherIndicesIndex(16),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [108] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(265),
+    /* matcher_indices */ MatcherIndicesIndex(276),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [109] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(55),
+    /* matcher_indices */ MatcherIndicesIndex(145),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [110] */
     /* name */ "U",
-    /* matcher_indices */ MatcherIndicesIndex(268),
+    /* matcher_indices */ MatcherIndicesIndex(273),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [111] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(118),
+    /* matcher_indices */ MatcherIndicesIndex(82),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [112] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(264),
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(274),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [113] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(265),
+    /* matcher_indices */ MatcherIndicesIndex(67),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [114] */
-    /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(266),
+    /* name */ "U",
+    /* matcher_indices */ MatcherIndicesIndex(277),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [115] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(267),
+    /* matcher_indices */ MatcherIndicesIndex(130),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [116] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(268),
+    /* matcher_indices */ MatcherIndicesIndex(273),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [117] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(269),
+    /* matcher_indices */ MatcherIndicesIndex(274),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [118] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(270),
+    /* matcher_indices */ MatcherIndicesIndex(275),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [119] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(276),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [120] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(277),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [121] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(278),
+    /* kind */ TemplateInfo::Kind::kType,
+  },
+  {
+    /* [122] */
+    /* name */ "T",
+    /* matcher_indices */ MatcherIndicesIndex(279),
     /* kind */ TemplateInfo::Kind::kType,
   },
 };
@@ -5093,9 +5291,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5104,9 +5302,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(273),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(278),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5115,9 +5313,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(14),
-    /* parameters */ ParameterIndex(197),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(202),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5126,9 +5324,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(57),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(61),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5137,9 +5335,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(60),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(64),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5148,9 +5346,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(58),
-    /* parameters */ ParameterIndex(282),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* templates */ TemplateIndex(62),
+    /* parameters */ ParameterIndex(287),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5159,9 +5357,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(15),
-    /* parameters */ ParameterIndex(201),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* templates */ TemplateIndex(19),
+    /* parameters */ ParameterIndex(206),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5170,9 +5368,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(61),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* templates */ TemplateIndex(65),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5181,9 +5379,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(321),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(326),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5192,9 +5390,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(18),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(22),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5203,9 +5401,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(26),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5214,9 +5412,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(26),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(30),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5225,9 +5423,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(18),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(22),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5236,9 +5434,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(26),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5247,9 +5445,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(26),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(30),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5258,9 +5456,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(18),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(22),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5269,9 +5467,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(26),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5280,9 +5478,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(26),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(30),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5291,9 +5489,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(18),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(22),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5302,9 +5500,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(22),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(26),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5313,9 +5511,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(26),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(30),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5324,9 +5522,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(30),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(34),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5335,9 +5533,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5346,9 +5544,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(38),
-    /* parameters */ ParameterIndex(243),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(42),
+    /* parameters */ ParameterIndex(248),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5357,9 +5555,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(30),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(34),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5368,9 +5566,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5379,9 +5577,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(38),
-    /* parameters */ ParameterIndex(246),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(42),
+    /* parameters */ ParameterIndex(251),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5390,9 +5588,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(30),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(34),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5401,9 +5599,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5412,9 +5610,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(38),
-    /* parameters */ ParameterIndex(185),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(42),
+    /* parameters */ ParameterIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5423,9 +5621,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(30),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* templates */ TemplateIndex(34),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5434,9 +5632,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(34),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* templates */ TemplateIndex(38),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5445,9 +5643,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(38),
-    /* parameters */ ParameterIndex(249),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* templates */ TemplateIndex(42),
+    /* parameters */ ParameterIndex(254),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5456,9 +5654,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5467,9 +5665,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(301),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(306),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5478,9 +5676,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(75),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5489,9 +5687,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(303),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(308),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5500,9 +5698,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5511,9 +5709,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(305),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(310),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5522,9 +5720,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(146),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(156),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5533,9 +5731,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(307),
-    /* return_matcher_indices */ MatcherIndicesIndex(146),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(312),
+    /* return_matcher_indices */ MatcherIndicesIndex(156),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5544,9 +5742,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(154),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(159),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5555,9 +5753,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(309),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(314),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5566,9 +5764,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5577,9 +5775,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(93),
-    /* parameters */ ParameterIndex(311),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(97),
+    /* parameters */ ParameterIndex(316),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5588,9 +5786,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5601,7 +5799,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5610,9 +5808,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(313),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(9),
+    /* parameters */ ParameterIndex(318),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5623,7 +5821,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5632,9 +5830,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(315),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(9),
+    /* parameters */ ParameterIndex(320),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5644,8 +5842,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5654,9 +5852,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(317),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(9),
+    /* parameters */ ParameterIndex(322),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5667,7 +5865,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5676,9 +5874,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(319),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(9),
+    /* parameters */ ParameterIndex(324),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5688,8 +5886,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5698,9 +5896,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(95),
-    /* parameters */ ParameterIndex(376),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(99),
+    /* parameters */ ParameterIndex(381),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5709,9 +5907,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(95),
-    /* parameters */ ParameterIndex(377),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(99),
+    /* parameters */ ParameterIndex(382),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5720,9 +5918,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(95),
-    /* parameters */ ParameterIndex(378),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(99),
+    /* parameters */ ParameterIndex(383),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5731,9 +5929,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(95),
-    /* parameters */ ParameterIndex(379),
-    /* return_matcher_indices */ MatcherIndicesIndex(146),
+    /* templates */ TemplateIndex(99),
+    /* parameters */ ParameterIndex(384),
+    /* return_matcher_indices */ MatcherIndicesIndex(156),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5742,9 +5940,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(97),
-    /* parameters */ ParameterIndex(376),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(101),
+    /* parameters */ ParameterIndex(381),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5753,9 +5951,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(97),
-    /* parameters */ ParameterIndex(377),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(101),
+    /* parameters */ ParameterIndex(382),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5764,9 +5962,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(97),
-    /* parameters */ ParameterIndex(378),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* templates */ TemplateIndex(101),
+    /* parameters */ ParameterIndex(383),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5775,9 +5973,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(97),
-    /* parameters */ ParameterIndex(379),
-    /* return_matcher_indices */ MatcherIndicesIndex(146),
+    /* templates */ TemplateIndex(101),
+    /* parameters */ ParameterIndex(384),
+    /* return_matcher_indices */ MatcherIndicesIndex(156),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5787,8 +5985,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(240),
-    /* return_matcher_indices */ MatcherIndicesIndex(140),
+    /* parameters */ ParameterIndex(245),
+    /* return_matcher_indices */ MatcherIndicesIndex(150),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -5799,7 +5997,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(198),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5808,9 +6006,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -5819,9 +6017,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -5830,9 +6028,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -5841,9 +6039,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -5852,9 +6050,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
+    /* templates */ TemplateIndex(86),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -5863,9 +6061,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5874,9 +6072,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -5885,9 +6083,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(288),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(293),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5896,9 +6094,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(288),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(293),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5907,9 +6105,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(291),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(296),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5918,9 +6116,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(291),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(296),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5929,9 +6127,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(294),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(299),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5940,9 +6138,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(294),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(299),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5951,9 +6149,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(352),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(357),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5962,9 +6160,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(352),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(357),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5973,9 +6171,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(354),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(359),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5984,9 +6182,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(354),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(359),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -5995,9 +6193,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(356),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(361),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6006,9 +6204,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(356),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(361),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6017,9 +6215,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6028,9 +6226,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6039,9 +6237,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(105),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(109),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6050,9 +6248,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(107),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(111),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6061,9 +6259,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(109),
-    /* parameters */ ParameterIndex(385),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(113),
+    /* parameters */ ParameterIndex(390),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6074,7 +6272,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(184),
+    /* return_matcher_indices */ MatcherIndicesIndex(196),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6083,9 +6281,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6094,9 +6292,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -6105,9 +6303,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -6116,9 +6314,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -6127,9 +6325,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
+    /* templates */ TemplateIndex(86),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -6138,9 +6336,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -6149,9 +6347,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -6160,9 +6358,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(288),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(293),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6171,9 +6369,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(288),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(293),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6182,9 +6380,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(291),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(296),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6193,9 +6391,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(291),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(296),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(111),
   },
   {
@@ -6204,9 +6402,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(384),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(389),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6215,9 +6413,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(384),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(389),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6226,9 +6424,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(105),
-    /* parameters */ ParameterIndex(384),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(109),
+    /* parameters */ ParameterIndex(389),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6237,9 +6435,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(107),
-    /* parameters */ ParameterIndex(384),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(111),
+    /* parameters */ ParameterIndex(389),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6248,9 +6446,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(109),
-    /* parameters */ ParameterIndex(384),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(113),
+    /* parameters */ ParameterIndex(389),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6260,8 +6458,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(237),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(242),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6272,7 +6470,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6282,8 +6480,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(165),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(170),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6292,9 +6490,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6303,9 +6501,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(99),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6316,7 +6514,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6326,8 +6524,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(169),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(174),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6338,7 +6536,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(119),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6347,9 +6545,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(56),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6360,7 +6558,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6370,8 +6568,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(157),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(162),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6380,9 +6578,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6391,9 +6589,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(84),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6403,8 +6601,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6413,9 +6611,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6426,7 +6624,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(124),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6437,7 +6635,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(124),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6446,9 +6644,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(62),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6457,9 +6655,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(62),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6470,7 +6668,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(129),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6481,7 +6679,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(129),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6491,8 +6689,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(177),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(182),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6501,9 +6699,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(134),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6512,9 +6710,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6523,9 +6721,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
+    /* templates */ TemplateIndex(9),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6534,9 +6732,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6545,9 +6743,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6556,9 +6754,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* templates */ TemplateIndex(9),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6567,9 +6765,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6580,7 +6778,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(182),
+    /* return_matcher_indices */ MatcherIndicesIndex(194),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6589,9 +6787,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -6600,9 +6798,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -6611,9 +6809,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -6622,9 +6820,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
+    /* templates */ TemplateIndex(121),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -6633,9 +6831,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
+    /* templates */ TemplateIndex(86),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(109),
   },
   {
@@ -6644,9 +6842,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -6655,9 +6853,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(205),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(210),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(110),
   },
   {
@@ -6666,9 +6864,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6677,9 +6875,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6688,9 +6886,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(105),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(109),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6699,9 +6897,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(107),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(111),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6710,9 +6908,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(109),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(174),
+    /* templates */ TemplateIndex(113),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(186),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -6721,9 +6919,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(74),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6732,9 +6930,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(74),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6743,9 +6941,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(14),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(26),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6754,9 +6952,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(14),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(26),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6765,9 +6963,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(153),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(158),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6776,9 +6974,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(14),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(79),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6789,7 +6987,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(139),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6799,8 +6997,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(157),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(162),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6809,9 +7007,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(68),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6820,9 +7018,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(84),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6832,8 +7030,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(181),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(186),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6842,9 +7040,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(144),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -6853,8 +7051,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(243),
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(248),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6864,8 +7062,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(246),
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(251),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6875,8 +7073,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(185),
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(190),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6886,8 +7084,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(1),
-    /* parameters */ ParameterIndex(249),
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(254),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6897,8 +7095,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(6),
-    /* parameters */ ParameterIndex(252),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(257),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6908,8 +7106,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(6),
-    /* parameters */ ParameterIndex(255),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(260),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6919,8 +7117,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(6),
-    /* parameters */ ParameterIndex(189),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(194),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6930,8 +7128,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(6),
-    /* parameters */ ParameterIndex(258),
+    /* templates */ TemplateIndex(10),
+    /* parameters */ ParameterIndex(263),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6941,8 +7139,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(10),
-    /* parameters */ ParameterIndex(261),
+    /* templates */ TemplateIndex(14),
+    /* parameters */ ParameterIndex(266),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6952,8 +7150,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(10),
-    /* parameters */ ParameterIndex(264),
+    /* templates */ TemplateIndex(14),
+    /* parameters */ ParameterIndex(269),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6963,8 +7161,8 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(10),
-    /* parameters */ ParameterIndex(193),
+    /* templates */ TemplateIndex(14),
+    /* parameters */ ParameterIndex(198),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6974,8 +7172,8 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(10),
-    /* parameters */ ParameterIndex(267),
+    /* templates */ TemplateIndex(14),
+    /* parameters */ ParameterIndex(272),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -6985,9 +7183,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(78),
-    /* parameters */ ParameterIndex(229),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(82),
+    /* parameters */ ParameterIndex(234),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -6996,9 +7194,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(359),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(364),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7007,9 +7205,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(46),
-    /* parameters */ ParameterIndex(360),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(50),
+    /* parameters */ ParameterIndex(365),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7018,9 +7216,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(80),
-    /* parameters */ ParameterIndex(361),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(84),
+    /* parameters */ ParameterIndex(366),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7029,9 +7227,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(107),
-    /* parameters */ ParameterIndex(362),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(111),
+    /* parameters */ ParameterIndex(367),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7040,9 +7238,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(87),
-    /* parameters */ ParameterIndex(363),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(91),
+    /* parameters */ ParameterIndex(368),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7051,9 +7249,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(364),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(369),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7062,9 +7260,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(111),
-    /* parameters */ ParameterIndex(365),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(115),
+    /* parameters */ ParameterIndex(370),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7073,9 +7271,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(89),
-    /* parameters */ ParameterIndex(229),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(93),
+    /* parameters */ ParameterIndex(234),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7084,9 +7282,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(91),
-    /* parameters */ ParameterIndex(366),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(95),
+    /* parameters */ ParameterIndex(371),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(10),
   },
   {
@@ -7095,9 +7293,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(270),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(275),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7106,9 +7304,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(75),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7117,9 +7315,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7128,9 +7326,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(276),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(281),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7139,9 +7337,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(154),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(159),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7150,9 +7348,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7163,7 +7361,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7174,7 +7372,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7184,8 +7382,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7196,7 +7394,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -7205,9 +7403,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7216,9 +7414,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7227,9 +7425,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(339),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(344),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7238,9 +7436,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7249,9 +7447,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(345),
-    /* return_matcher_indices */ MatcherIndicesIndex(34),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(350),
+    /* return_matcher_indices */ MatcherIndicesIndex(46),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7260,9 +7458,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(344),
-    /* return_matcher_indices */ MatcherIndicesIndex(34),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(349),
+    /* return_matcher_indices */ MatcherIndicesIndex(46),
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
@@ -7271,9 +7469,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(66),
-    /* parameters */ ParameterIndex(346),
-    /* return_matcher_indices */ MatcherIndicesIndex(110),
+    /* templates */ TemplateIndex(70),
+    /* parameters */ ParameterIndex(351),
+    /* return_matcher_indices */ MatcherIndicesIndex(122),
     /* const_eval_fn */ ConstEvalFunctionIndex(89),
   },
   {
@@ -7282,9 +7480,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(66),
-    /* parameters */ ParameterIndex(348),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(70),
+    /* parameters */ ParameterIndex(353),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(90),
   },
   {
@@ -7293,9 +7491,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 4,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(350),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(355),
+    /* return_matcher_indices */ MatcherIndicesIndex(50),
     /* const_eval_fn */ ConstEvalFunctionIndex(91),
   },
   {
@@ -7304,9 +7502,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7315,9 +7513,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(386),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(391),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7326,9 +7524,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(386),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(391),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7337,9 +7535,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7348,9 +7546,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7359,9 +7557,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7370,9 +7568,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7381,9 +7579,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(387),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(392),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7392,9 +7590,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(388),
-    /* return_matcher_indices */ MatcherIndicesIndex(190),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(393),
+    /* return_matcher_indices */ MatcherIndicesIndex(202),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7403,9 +7601,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7414,9 +7612,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(389),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(394),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7425,9 +7623,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(389),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(394),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7436,9 +7634,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7447,9 +7645,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7458,9 +7656,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7469,9 +7667,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7480,9 +7678,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(390),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(395),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7491,9 +7689,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(391),
-    /* return_matcher_indices */ MatcherIndicesIndex(196),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(396),
+    /* return_matcher_indices */ MatcherIndicesIndex(208),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7502,9 +7700,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7513,9 +7711,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(392),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(397),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7524,9 +7722,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(392),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(397),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7535,9 +7733,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7546,9 +7744,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7557,9 +7755,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7568,9 +7766,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7579,9 +7777,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(393),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(398),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7590,9 +7788,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(394),
-    /* return_matcher_indices */ MatcherIndicesIndex(202),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(399),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7601,9 +7799,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7612,9 +7810,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(395),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(400),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7623,9 +7821,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(395),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(400),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7634,9 +7832,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7645,9 +7843,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7656,9 +7854,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7667,9 +7865,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7678,9 +7876,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(396),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(401),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7689,9 +7887,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(397),
-    /* return_matcher_indices */ MatcherIndicesIndex(208),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(402),
+    /* return_matcher_indices */ MatcherIndicesIndex(218),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7700,9 +7898,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7711,9 +7909,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(398),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(403),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7722,9 +7920,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(398),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(403),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7733,9 +7931,9 @@
     /* num_parameters */ 9,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7744,9 +7942,9 @@
     /* num_parameters */ 9,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7755,9 +7953,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7766,9 +7964,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7777,9 +7975,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(399),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(404),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7788,9 +7986,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(400),
-    /* return_matcher_indices */ MatcherIndicesIndex(214),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(405),
+    /* return_matcher_indices */ MatcherIndicesIndex(224),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7799,9 +7997,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7810,9 +8008,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7821,9 +8019,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(401),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(406),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7832,9 +8030,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7843,9 +8041,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7854,9 +8052,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7865,9 +8063,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7876,9 +8074,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(402),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(407),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7887,9 +8085,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(403),
-    /* return_matcher_indices */ MatcherIndicesIndex(220),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(408),
+    /* return_matcher_indices */ MatcherIndicesIndex(230),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7898,9 +8096,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -7909,9 +8107,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(404),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(409),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7920,9 +8118,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(404),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(409),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -7931,9 +8129,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7942,9 +8140,9 @@
     /* num_parameters */ 8,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -7953,9 +8151,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7964,9 +8162,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(209),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(214),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -7975,9 +8173,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(405),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(410),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7986,9 +8184,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(406),
-    /* return_matcher_indices */ MatcherIndicesIndex(226),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(411),
+    /* return_matcher_indices */ MatcherIndicesIndex(236),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -7997,9 +8195,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -8008,9 +8206,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(407),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(412),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -8019,9 +8217,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(407),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(412),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -8030,9 +8228,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -8041,9 +8239,9 @@
     /* num_parameters */ 12,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -8052,9 +8250,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -8063,9 +8261,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -8074,9 +8272,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(408),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(413),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -8085,9 +8283,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(409),
-    /* return_matcher_indices */ MatcherIndicesIndex(232),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(414),
+    /* return_matcher_indices */ MatcherIndicesIndex(242),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -8096,9 +8294,9 @@
     /* num_parameters */ 0,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
+    /* templates */ TemplateIndex(122),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -8107,9 +8305,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(118),
-    /* parameters */ ParameterIndex(410),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(122),
+    /* parameters */ ParameterIndex(415),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -8118,9 +8316,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(410),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(415),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -8129,9 +8327,9 @@
     /* num_parameters */ 16,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -8140,9 +8338,9 @@
     /* num_parameters */ 16,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(112),
   },
   {
@@ -8151,9 +8349,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -8162,9 +8360,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(217),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(222),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(113),
   },
   {
@@ -8173,9 +8371,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(103),
-    /* parameters */ ParameterIndex(411),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(107),
+    /* parameters */ ParameterIndex(416),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -8184,9 +8382,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(101),
-    /* parameters */ ParameterIndex(412),
-    /* return_matcher_indices */ MatcherIndicesIndex(238),
+    /* templates */ TemplateIndex(105),
+    /* parameters */ ParameterIndex(417),
+    /* return_matcher_indices */ MatcherIndicesIndex(248),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -8197,7 +8395,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(104),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8208,7 +8406,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(104),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8217,9 +8415,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(38),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8228,9 +8426,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(38),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8241,7 +8439,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8252,7 +8450,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8262,8 +8460,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(173),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(178),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8272,9 +8470,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(114),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8285,7 +8483,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8296,7 +8494,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8305,9 +8503,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8316,9 +8514,9 @@
     /* num_parameters */ 7,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(19),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8329,7 +8527,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8340,7 +8538,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(50),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8351,7 +8549,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(119),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8360,9 +8558,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(56),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8373,7 +8571,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8384,7 +8582,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8393,9 +8591,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8404,9 +8602,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8416,8 +8614,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8426,9 +8624,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8437,9 +8635,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(27),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8448,9 +8646,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
+    /* templates */ TemplateIndex(18),
     /* parameters */ ParameterIndex(80),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8461,7 +8659,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8472,7 +8670,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8481,9 +8679,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(95),
-    /* parameters */ ParameterIndex(378),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(99),
+    /* parameters */ ParameterIndex(383),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8492,9 +8690,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(97),
-    /* parameters */ ParameterIndex(378),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(101),
+    /* parameters */ ParameterIndex(383),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8505,7 +8703,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8516,7 +8714,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8525,9 +8723,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8536,9 +8734,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8548,8 +8746,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8558,9 +8756,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8571,7 +8769,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8582,7 +8780,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8591,9 +8789,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8602,9 +8800,9 @@
     /* num_parameters */ 6,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(32),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8614,8 +8812,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(161),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(166),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8624,9 +8822,9 @@
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(4),
+    /* templates */ TemplateIndex(8),
     /* parameters */ ParameterIndex(94),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -8635,9 +8833,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -8646,9 +8844,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -8657,9 +8855,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(339),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(344),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -8668,9 +8866,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -8679,9 +8877,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(343),
-    /* return_matcher_indices */ MatcherIndicesIndex(34),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(348),
+    /* return_matcher_indices */ MatcherIndicesIndex(46),
     /* const_eval_fn */ ConstEvalFunctionIndex(86),
   },
   {
@@ -8690,9 +8888,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -8701,9 +8899,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -8712,9 +8910,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(339),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(344),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -8723,9 +8921,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -8734,9 +8932,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(343),
-    /* return_matcher_indices */ MatcherIndicesIndex(34),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(348),
+    /* return_matcher_indices */ MatcherIndicesIndex(46),
     /* const_eval_fn */ ConstEvalFunctionIndex(87),
   },
   {
@@ -8745,9 +8943,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -8756,9 +8954,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -8767,9 +8965,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(339),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(344),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -8778,9 +8976,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(92),
   },
   {
@@ -8789,9 +8987,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -8800,9 +8998,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -8811,9 +9009,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(339),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(344),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -8822,9 +9020,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(340),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(345),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(93),
   },
   {
@@ -8834,8 +9032,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(95),
   },
   {
@@ -8844,9 +9042,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(53),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(65),
     /* const_eval_fn */ ConstEvalFunctionIndex(95),
   },
   {
@@ -8855,9 +9053,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(95),
   },
   {
@@ -8866,9 +9064,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(95),
   },
   {
@@ -8878,8 +9076,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(96),
   },
   {
@@ -8888,9 +9086,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(53),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(65),
     /* const_eval_fn */ ConstEvalFunctionIndex(96),
   },
   {
@@ -8899,9 +9097,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(96),
   },
   {
@@ -8910,9 +9108,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(96),
   },
   {
@@ -8921,9 +9119,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
   },
   {
@@ -8932,9 +9130,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
   },
   {
@@ -8943,9 +9141,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(227),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
   },
   {
@@ -8954,9 +9152,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(230),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(235),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(63),
   },
   {
@@ -8965,9 +9163,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(222),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(227),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(63),
   },
   {
@@ -8976,9 +9174,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(81),
-    /* parameters */ ParameterIndex(233),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(85),
+    /* parameters */ ParameterIndex(238),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(64),
   },
   {
@@ -8989,7 +9187,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -8999,8 +9197,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(383),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* parameters */ ParameterIndex(388),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9009,9 +9207,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(112),
+    /* templates */ TemplateIndex(116),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -9022,7 +9220,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -9033,7 +9231,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9042,9 +9240,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(113),
+    /* templates */ TemplateIndex(117),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -9055,7 +9253,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -9065,8 +9263,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(373),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9075,9 +9273,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(114),
+    /* templates */ TemplateIndex(118),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -9088,7 +9286,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(67),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -9098,8 +9296,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(359),
-    /* return_matcher_indices */ MatcherIndicesIndex(67),
+    /* parameters */ ParameterIndex(364),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9108,9 +9306,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(115),
+    /* templates */ TemplateIndex(119),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(67),
+    /* return_matcher_indices */ MatcherIndicesIndex(16),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -9121,7 +9319,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(107),
   },
   {
@@ -9131,8 +9329,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
@@ -9141,9 +9339,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(116),
+    /* templates */ TemplateIndex(120),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -9152,9 +9350,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
@@ -9163,9 +9361,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(69),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(73),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
@@ -9174,9 +9372,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
@@ -9185,9 +9383,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
@@ -9196,9 +9394,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(2),
   },
   {
@@ -9207,9 +9405,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(2),
   },
   {
@@ -9219,8 +9417,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(3),
   },
   {
@@ -9229,9 +9427,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(3),
   },
   {
@@ -9241,8 +9439,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(4),
   },
   {
@@ -9251,9 +9449,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(4),
   },
   {
@@ -9262,9 +9460,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(74),
-    /* parameters */ ParameterIndex(358),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(78),
+    /* parameters */ ParameterIndex(363),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9273,9 +9471,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(76),
-    /* parameters */ ParameterIndex(358),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(80),
+    /* parameters */ ParameterIndex(363),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9284,9 +9482,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(5),
   },
   {
@@ -9295,9 +9493,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(5),
   },
   {
@@ -9306,9 +9504,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(6),
   },
   {
@@ -9317,9 +9515,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(6),
   },
   {
@@ -9328,9 +9526,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(7),
   },
   {
@@ -9339,9 +9537,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(7),
   },
   {
@@ -9350,9 +9548,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(8),
   },
   {
@@ -9361,9 +9559,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(8),
   },
   {
@@ -9372,9 +9570,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(9),
   },
   {
@@ -9383,9 +9581,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(9),
   },
   {
@@ -9394,9 +9592,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(11),
   },
   {
@@ -9405,9 +9603,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(11),
   },
   {
@@ -9416,9 +9614,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(12),
   },
   {
@@ -9427,9 +9625,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(12),
   },
   {
@@ -9438,9 +9636,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(13),
   },
   {
@@ -9449,9 +9647,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(13),
   },
   {
@@ -9460,9 +9658,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(14),
   },
   {
@@ -9471,9 +9669,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(14),
   },
   {
@@ -9482,9 +9680,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(15),
   },
   {
@@ -9493,9 +9691,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(15),
   },
   {
@@ -9504,9 +9702,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(16),
   },
   {
@@ -9515,9 +9713,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(16),
   },
   {
@@ -9526,9 +9724,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(17),
   },
   {
@@ -9537,9 +9735,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(17),
   },
   {
@@ -9548,9 +9746,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(19),
   },
   {
@@ -9559,9 +9757,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(19),
   },
   {
@@ -9570,9 +9768,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(21),
   },
   {
@@ -9581,9 +9779,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(21),
   },
   {
@@ -9593,8 +9791,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(373),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9603,9 +9801,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(369),
-    /* return_matcher_indices */ MatcherIndicesIndex(74),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(374),
+    /* return_matcher_indices */ MatcherIndicesIndex(86),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -9614,9 +9812,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(25),
   },
   {
@@ -9625,9 +9823,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(25),
   },
   {
@@ -9636,9 +9834,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(26),
   },
   {
@@ -9647,9 +9845,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(26),
   },
   {
@@ -9658,9 +9856,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(27),
   },
   {
@@ -9669,9 +9867,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(150),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(155),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(27),
   },
   {
@@ -9680,9 +9878,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(29),
   },
   {
@@ -9691,9 +9889,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(29),
   },
   {
@@ -9702,9 +9900,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(30),
   },
   {
@@ -9713,9 +9911,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(30),
   },
   {
@@ -9724,9 +9922,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(31),
   },
   {
@@ -9735,9 +9933,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(31),
   },
   {
@@ -9746,9 +9944,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(32),
   },
   {
@@ -9757,9 +9955,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(32),
   },
   {
@@ -9768,9 +9966,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(33),
   },
   {
@@ -9779,9 +9977,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(33),
   },
   {
@@ -9790,9 +9988,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(126),
+    /* return_matcher_indices */ MatcherIndicesIndex(136),
     /* const_eval_fn */ ConstEvalFunctionIndex(34),
   },
   {
@@ -9801,9 +9999,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(77),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(89),
     /* const_eval_fn */ ConstEvalFunctionIndex(34),
   },
   {
@@ -9812,9 +10010,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(15),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(35),
   },
   {
@@ -9823,9 +10021,9 @@
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(35),
   },
   {
@@ -9834,9 +10032,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(36),
   },
   {
@@ -9845,9 +10043,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(36),
   },
   {
@@ -9856,9 +10054,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(50),
-    /* parameters */ ParameterIndex(297),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(54),
+    /* parameters */ ParameterIndex(302),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(37),
   },
   {
@@ -9867,9 +10065,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(299),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(304),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(37),
   },
   {
@@ -9878,9 +10076,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(38),
   },
   {
@@ -9889,9 +10087,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(38),
   },
   {
@@ -9900,9 +10098,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(39),
   },
   {
@@ -9911,9 +10109,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(39),
   },
   {
@@ -9922,9 +10120,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(40),
   },
   {
@@ -9933,9 +10131,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(40),
   },
   {
@@ -9944,9 +10142,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(41),
   },
   {
@@ -9955,9 +10153,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(69),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(73),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(41),
   },
   {
@@ -9966,9 +10164,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(42),
   },
   {
@@ -9977,9 +10175,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(69),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(73),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(42),
   },
   {
@@ -9988,9 +10186,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(128),
+    /* return_matcher_indices */ MatcherIndicesIndex(138),
     /* const_eval_fn */ ConstEvalFunctionIndex(44),
   },
   {
@@ -9999,9 +10197,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(83),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(95),
     /* const_eval_fn */ ConstEvalFunctionIndex(44),
   },
   {
@@ -10010,9 +10208,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(55),
   },
   {
@@ -10021,9 +10219,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(55),
   },
   {
@@ -10033,8 +10231,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
-    /* return_matcher_indices */ MatcherIndicesIndex(76),
+    /* parameters */ ParameterIndex(373),
+    /* return_matcher_indices */ MatcherIndicesIndex(88),
     /* const_eval_fn */ ConstEvalFunctionIndex(56),
   },
   {
@@ -10043,9 +10241,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(369),
-    /* return_matcher_indices */ MatcherIndicesIndex(74),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(374),
+    /* return_matcher_indices */ MatcherIndicesIndex(86),
     /* const_eval_fn */ ConstEvalFunctionIndex(56),
   },
   {
@@ -10054,9 +10252,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(57),
   },
   {
@@ -10065,9 +10263,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(57),
   },
   {
@@ -10076,9 +10274,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(60),
   },
   {
@@ -10087,9 +10285,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(60),
   },
   {
@@ -10098,9 +10296,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(61),
   },
   {
@@ -10109,9 +10307,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(61),
   },
   {
@@ -10120,9 +10318,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(62),
   },
   {
@@ -10131,9 +10329,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(54),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(58),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(62),
   },
   {
@@ -10142,9 +10340,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(84),
+    /* templates */ TemplateIndex(88),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(65),
   },
   {
@@ -10153,9 +10351,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(83),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(87),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(65),
   },
   {
@@ -10164,9 +10362,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(66),
   },
   {
@@ -10175,9 +10373,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(66),
   },
   {
@@ -10186,9 +10384,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(67),
   },
   {
@@ -10197,9 +10395,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(67),
   },
   {
@@ -10208,9 +10406,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(68),
   },
   {
@@ -10219,9 +10417,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(68),
   },
   {
@@ -10230,9 +10428,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(69),
   },
   {
@@ -10241,9 +10439,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(69),
   },
   {
@@ -10252,9 +10450,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(70),
   },
   {
@@ -10263,9 +10461,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(70),
   },
   {
@@ -10274,9 +10472,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(71),
   },
   {
@@ -10285,9 +10483,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(71),
   },
   {
@@ -10296,9 +10494,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(72),
   },
   {
@@ -10307,9 +10505,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(72),
   },
   {
@@ -10318,9 +10516,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
+    /* templates */ TemplateIndex(46),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(74),
   },
   {
@@ -10329,9 +10527,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(74),
   },
   {
@@ -10340,9 +10538,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(279),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(284),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10352,8 +10550,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(285),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(290),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10364,7 +10562,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(44),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10374,8 +10572,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(240),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* parameters */ ParameterIndex(245),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10384,9 +10582,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(323),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(328),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10395,9 +10593,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(325),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(330),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10406,9 +10604,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(323),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(328),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10417,9 +10615,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(325),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(330),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10428,9 +10626,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(327),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(332),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10439,9 +10637,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(329),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(334),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10450,9 +10648,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(331),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(336),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10461,9 +10659,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(333),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(338),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10472,9 +10670,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(72),
-    /* parameters */ ParameterIndex(323),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(76),
+    /* parameters */ ParameterIndex(328),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10483,9 +10681,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(71),
-    /* parameters */ ParameterIndex(325),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(75),
+    /* parameters */ ParameterIndex(330),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10494,9 +10692,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(335),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(340),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10505,9 +10703,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(337),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(342),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10516,9 +10714,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(86),
-    /* parameters */ ParameterIndex(335),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(90),
+    /* parameters */ ParameterIndex(340),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10527,9 +10725,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(85),
-    /* parameters */ ParameterIndex(337),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(89),
+    /* parameters */ ParameterIndex(342),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -10539,8 +10737,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(83),
   },
   {
@@ -10549,9 +10747,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(47),
-    /* parameters */ ParameterIndex(235),
-    /* return_matcher_indices */ MatcherIndicesIndex(53),
+    /* templates */ TemplateIndex(51),
+    /* parameters */ ParameterIndex(240),
+    /* return_matcher_indices */ MatcherIndicesIndex(65),
     /* const_eval_fn */ ConstEvalFunctionIndex(83),
   },
   {
@@ -10560,9 +10758,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -10571,9 +10769,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
   },
   {
@@ -10582,9 +10780,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(84),
+    /* templates */ TemplateIndex(88),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -10593,9 +10791,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(84),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(88),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(85),
   },
   {
@@ -10604,9 +10802,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -10615,9 +10813,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(94),
   },
   {
@@ -10626,9 +10824,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
+    /* templates */ TemplateIndex(86),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
   },
   {
@@ -10637,9 +10835,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
   },
   {
@@ -10648,9 +10846,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(82),
+    /* templates */ TemplateIndex(86),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(100),
   },
   {
@@ -10659,9 +10857,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(82),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(86),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(100),
   },
   {
@@ -10670,9 +10868,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(101),
   },
   {
@@ -10681,9 +10879,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(101),
   },
   {
@@ -10692,9 +10890,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
   },
   {
@@ -10703,9 +10901,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
   },
   {
@@ -10714,9 +10912,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(103),
   },
   {
@@ -10725,9 +10923,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(103),
   },
   {
@@ -10736,9 +10934,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(70),
+    /* templates */ TemplateIndex(74),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(104),
   },
   {
@@ -10747,9 +10945,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(70),
-    /* parameters */ ParameterIndex(221),
-    /* return_matcher_indices */ MatcherIndicesIndex(113),
+    /* templates */ TemplateIndex(74),
+    /* parameters */ ParameterIndex(226),
+    /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(104),
   },
   {
@@ -10758,9 +10956,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -10769,9 +10967,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(341),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(346),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(105),
   },
   {
@@ -10780,9 +10978,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(99),
+    /* templates */ TemplateIndex(103),
     /* parameters */ ParameterIndex(16),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -10791,9 +10989,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(99),
-    /* parameters */ ParameterIndex(341),
-    /* return_matcher_indices */ MatcherIndicesIndex(56),
+    /* templates */ TemplateIndex(103),
+    /* parameters */ ParameterIndex(346),
+    /* return_matcher_indices */ MatcherIndicesIndex(68),
     /* const_eval_fn */ ConstEvalFunctionIndex(106),
   },
   {
@@ -10802,9 +11000,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 1,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(254),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -10813,9 +11011,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(117),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(244),
+    /* templates */ TemplateIndex(121),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(254),
     /* const_eval_fn */ ConstEvalFunctionIndex(108),
   },
   {
@@ -10824,9 +11022,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(42),
-    /* parameters */ ParameterIndex(213),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
+    /* templates */ TemplateIndex(46),
+    /* parameters */ ParameterIndex(218),
+    /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(18),
   },
   {
@@ -10835,9 +11033,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(367),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(372),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(20),
   },
   {
@@ -10846,9 +11044,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(69),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(4),
+    /* templates */ TemplateIndex(73),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(22),
   },
   {
@@ -10859,7 +11057,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(9),
+    /* return_matcher_indices */ MatcherIndicesIndex(145),
     /* const_eval_fn */ ConstEvalFunctionIndex(23),
   },
   {
@@ -10870,7 +11068,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(24),
   },
   {
@@ -10879,9 +11077,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(226),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(231),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(28),
   },
   {
@@ -10890,9 +11088,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(45),
   },
   {
@@ -10902,8 +11100,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(375),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(46),
   },
   {
@@ -10913,8 +11111,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(375),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(47),
   },
   {
@@ -10924,8 +11122,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(375),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(48),
   },
   {
@@ -10935,8 +11133,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(371),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(376),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(49),
   },
   {
@@ -10946,8 +11144,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(371),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(376),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(50),
   },
   {
@@ -10957,8 +11155,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(372),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(377),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(51),
   },
   {
@@ -10968,8 +11166,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(373),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(378),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(52),
   },
   {
@@ -10979,8 +11177,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(372),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(377),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(53),
   },
   {
@@ -10990,8 +11188,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(373),
-    /* return_matcher_indices */ MatcherIndicesIndex(70),
+    /* parameters */ ParameterIndex(378),
+    /* return_matcher_indices */ MatcherIndicesIndex(82),
     /* const_eval_fn */ ConstEvalFunctionIndex(54),
   },
   {
@@ -11000,9 +11198,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(149),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(154),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(58),
   },
   {
@@ -11011,9 +11209,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(49),
-    /* parameters */ ParameterIndex(227),
-    /* return_matcher_indices */ MatcherIndicesIndex(50),
+    /* templates */ TemplateIndex(53),
+    /* parameters */ ParameterIndex(232),
+    /* return_matcher_indices */ MatcherIndicesIndex(62),
     /* const_eval_fn */ ConstEvalFunctionIndex(59),
   },
   {
@@ -11033,9 +11231,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(52),
-    /* parameters */ ParameterIndex(374),
-    /* return_matcher_indices */ MatcherIndicesIndex(14),
+    /* templates */ TemplateIndex(56),
+    /* parameters */ ParameterIndex(379),
+    /* return_matcher_indices */ MatcherIndicesIndex(26),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
   },
   {
@@ -11046,7 +11244,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* return_matcher_indices */ MatcherIndicesIndex(140),
     /* const_eval_fn */ ConstEvalFunctionIndex(75),
   },
   {
@@ -11057,7 +11255,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* return_matcher_indices */ MatcherIndicesIndex(140),
     /* const_eval_fn */ ConstEvalFunctionIndex(76),
   },
   {
@@ -11068,7 +11266,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(130),
+    /* return_matcher_indices */ MatcherIndicesIndex(140),
     /* const_eval_fn */ ConstEvalFunctionIndex(77),
   },
   {
@@ -11079,7 +11277,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(78),
   },
   {
@@ -11090,7 +11288,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(132),
+    /* return_matcher_indices */ MatcherIndicesIndex(142),
     /* const_eval_fn */ ConstEvalFunctionIndex(79),
   },
   {
@@ -11101,7 +11299,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(134),
+    /* return_matcher_indices */ MatcherIndicesIndex(144),
     /* const_eval_fn */ ConstEvalFunctionIndex(80),
   },
   {
@@ -11112,7 +11310,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(17),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(81),
   },
   {
@@ -11121,9 +11319,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(64),
-    /* parameters */ ParameterIndex(375),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* templates */ TemplateIndex(68),
+    /* parameters */ ParameterIndex(380),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11132,9 +11330,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(380),
-    /* return_matcher_indices */ MatcherIndicesIndex(23),
+    /* templates */ TemplateIndex(18),
+    /* parameters */ ParameterIndex(385),
+    /* return_matcher_indices */ MatcherIndicesIndex(166),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11143,9 +11341,9 @@
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11154,7 +11352,7 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(0),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -11165,9 +11363,9 @@
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11176,9 +11374,9 @@
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
-    /* templates */ TemplateIndex(72),
+    /* templates */ TemplateIndex(76),
     /* parameters */ ParameterIndex(0),
-    /* return_matcher_indices */ MatcherIndicesIndex(180),
+    /* return_matcher_indices */ MatcherIndicesIndex(192),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11188,8 +11386,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(136),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(146),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11200,7 +11398,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(/* invalid */),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -11210,53 +11408,53 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [557] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 5,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 5,
+    /* templates */ TemplateIndex(0),
+    /* parameters */ ParameterIndex(149),
+    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [558] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(64),
+    /* templates */ TemplateIndex(68),
     /* parameters */ ParameterIndex(1),
-    /* return_matcher_indices */ MatcherIndicesIndex(3),
+    /* return_matcher_indices */ MatcherIndicesIndex(6),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
   },
   {
-    /* [558] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 1,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 3,
-    /* templates */ TemplateIndex(63),
-    /* parameters */ ParameterIndex(381),
-    /* return_matcher_indices */ MatcherIndicesIndex(26),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
     /* [559] */
     /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 3,
-    /* templates */ TemplateIndex(63),
-    /* parameters */ ParameterIndex(382),
-    /* return_matcher_indices */ MatcherIndicesIndex(30),
+    /* templates */ TemplateIndex(67),
+    /* parameters */ ParameterIndex(386),
+    /* return_matcher_indices */ MatcherIndicesIndex(38),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [560] */
     /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 2,
+    /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
-    /* const_eval_fn */ ConstEvalFunctionIndex(97),
+    /* num_templates   */ 3,
+    /* templates */ TemplateIndex(67),
+    /* parameters */ ParameterIndex(387),
+    /* return_matcher_indices */ MatcherIndicesIndex(42),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [561] */
@@ -11265,8 +11463,19 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(224),
-    /* return_matcher_indices */ MatcherIndicesIndex(55),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
+    /* const_eval_fn */ ConstEvalFunctionIndex(97),
+  },
+  {
+    /* [562] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 2,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(229),
+    /* return_matcher_indices */ MatcherIndicesIndex(67),
     /* const_eval_fn */ ConstEvalFunctionIndex(98),
   },
 };
@@ -12411,10 +12620,16 @@
   },
   {
     /* [147] */
-    /* fn __tint_materialize[T](T) -> T */
+    /* fn subgroupMatrixStore[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num, AC : num](ptr<workgroup_or_storage, array<S, AC>, writable>, u32, subgroup_matrix<K, S, C, R>, bool, u32) */
     /* num overloads */ 1,
     /* overloads */ OverloadIndex(557),
   },
+  {
+    /* [148] */
+    /* fn __tint_materialize[T](T) -> T */
+    /* num overloads */ 1,
+    /* overloads */ OverloadIndex(558),
+  },
 };
 
 constexpr IntrinsicInfo kUnaryOperators[] = {
@@ -12422,13 +12637,13 @@
     /* [0] */
     /* op &[S : address_space, T, A : access](ref<S, T, A>) -> ptr<S, T, A> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(558),
+    /* overloads */ OverloadIndex(559),
   },
   {
     /* [1] */
     /* op *[S : address_space, T, A : access](ptr<S, T, A>) -> ref<S, T, A> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(559),
+    /* overloads */ OverloadIndex(560),
   },
   {
     /* [2] */
@@ -12540,13 +12755,13 @@
     /* [8] */
     /* op &&(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(560),
+    /* overloads */ OverloadIndex(561),
   },
   {
     /* [9] */
     /* op ||(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(561),
+    /* overloads */ OverloadIndex(562),
   },
   {
     /* [10] */
diff --git a/src/tint/lang/wgsl/reader/lower/lower.cc b/src/tint/lang/wgsl/reader/lower/lower.cc
index 2fe327e..1576e21 100644
--- a/src/tint/lang/wgsl/reader/lower/lower.cc
+++ b/src/tint/lang/wgsl/reader/lower/lower.cc
@@ -192,6 +192,7 @@
         CASE(kQuadSwapX)
         CASE(kQuadSwapY)
         CASE(kQuadSwapDiagonal)
+        CASE(kSubgroupMatrixStore)
 
         case tint::wgsl::BuiltinFn::kBitcast:               // should lower to ir::Bitcast
         case tint::wgsl::BuiltinFn::kWorkgroupUniformLoad:  // should be handled in Lower()
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
index e795ef6..227ef27 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
@@ -98,6 +98,7 @@
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/module.h"
 #include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
 #include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/lang/wgsl/sem/value_expression.h"
diff --git a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
index 31b9f2c..27cbae0 100644
--- a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
@@ -287,5 +287,43 @@
               R"(error: 'f32' cannot be used to construct a subgroup matrix of 'u32')");
 }
 
+TEST_F(ResolverSubgroupMatrixTest, SubgroupMatrixStore) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+    auto* buffer = GlobalVar("buffer", storage, read_write, ty.array(ty.f32(), 8_a),
+                             Vector{Group(0_u), Binding(0_u)});
+    auto* call = Call(wgsl::BuiltinFn::kSubgroupMatrixStore, AddressOf(buffer), 0_u,
+                      Call(ty.subgroup_matrix(core::SubgroupMatrixKind::kLeft, ty.f32(), 8u, 8u)),
+                      false, 32_u);
+    Func("foo", Empty, ty.void_(),
+         Vector{
+             CallStmt(call),
+         });
+
+    EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+    auto call_sem = Sem().Get(call)->As<sem::Call>();
+    ASSERT_NE(call_sem, nullptr);
+    auto* target = call_sem->Target()->As<sem::BuiltinFn>();
+    ASSERT_NE(target, nullptr);
+    EXPECT_EQ(target->Fn(), wgsl::BuiltinFn::kSubgroupMatrixStore);
+}
+
+TEST_F(ResolverSubgroupMatrixTest, SubgroupMatrixStore_MismatchedType) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+    auto* buffer = GlobalVar("buffer", storage, read_write, ty.array(ty.u32(), 8_a),
+                             Vector{Group(0_u), Binding(0_u)});
+    auto* call = Call(wgsl::BuiltinFn::kSubgroupMatrixStore, AddressOf(buffer), 0_u,
+                      Call(ty.subgroup_matrix(core::SubgroupMatrixKind::kLeft, ty.i32(), 8u, 8u)),
+                      false, 32_u);
+    Func("foo", Empty, ty.void_(),
+         Vector{
+             CallStmt(call),
+         });
+
+    EXPECT_FALSE(r()->Resolve());
+    EXPECT_THAT(r()->error(),
+                testing::HasSubstr(R"(error: no matching call to 'subgroupMatrixStore)"));
+}
+
 }  // namespace
 }  // namespace tint::resolver
diff --git a/src/tint/lang/wgsl/sem/builtin_fn.h b/src/tint/lang/wgsl/sem/builtin_fn.h
index 69b542e..8dfadea 100644
--- a/src/tint/lang/wgsl/sem/builtin_fn.h
+++ b/src/tint/lang/wgsl/sem/builtin_fn.h
@@ -109,8 +109,7 @@
     /// `packed_4x8_integer_dot_product`.
     bool IsPacked4x8IntegerDotProductBuiltin() const;
 
-    /// @returns true if builtin is a subgroup builtin (defined in the extension
-    /// chromium_experimental_subgroups)
+    /// @returns true if builtin is a subgroup builtin (defined in the extension `subgroups`).
     bool IsSubgroup() const;
 
     /// @returns true if builtin is a quadSwap builtin
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index 4c83288..cef6008 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -40,6 +40,7 @@
 
 import "src/tint/lang/core/access.def"
 import "src/tint/lang/core/address_space.def"
+import "src/tint/lang/core/subgroup_matrix_kind.def"
 import "src/tint/lang/core/texel_format.def"
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -148,6 +149,7 @@
 type ref<S: address_space, T, A: access>
 type atomic<T>
 @display("array<{T}>") type runtime_array<T>
+type array<T, N: num>
 type sampler
 type sampler_comparison
 type texture_1d<T>
@@ -177,6 +179,8 @@
 
 type __atomic_compare_exchange_result<T>
 
+type subgroup_matrix<S: subgroup_matrix_kind, T, C: num, R: num>
+
 ////////////////////////////////////////////////////////////////////////////////
 // Type matchers                                                              //
 ////////////////////////////////////////////////////////////////////////////////
@@ -202,6 +206,11 @@
 match f32_f16: f32 | f16
 match iu32: i32 | u32
 
+match subgroup_matrix_elements: f32 | f16 | u32 | i32 | u8 | i8
+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
+
 ////////////////////////////////////////////////////////////////////////////////
 // Enum matchers                                                              //
 //                                                                            //
@@ -671,6 +680,8 @@
 @must_use @stage("fragment", "compute") implicit(T: fiu32_f16) fn quadSwapDiagonal(e: T) -> T
 @must_use @stage("fragment", "compute") implicit(N: num, T: fiu32_f16) fn quadSwapDiagonal(e: vec<N, T>) -> vec<N, T>
 
+@stage("compute") implicit(K: subgroup_matrix_kind, S: fiu32_f16, C: num, R: num, AC: num) fn subgroupMatrixStore(ptr<workgroup_or_storage, array<S, AC>, writable>, u32, subgroup_matrix<K, S, C, R>, bool, u32)
+
 ////////////////////////////////////////////////////////////////////////////////
 // Value constructors                                                         //
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/tint/lang/wgsl/writer/raise/raise.cc b/src/tint/lang/wgsl/writer/raise/raise.cc
index fef161b..36ccf86 100644
--- a/src/tint/lang/wgsl/writer/raise/raise.cc
+++ b/src/tint/lang/wgsl/writer/raise/raise.cc
@@ -195,6 +195,7 @@
         CASE(kQuadSwapX)
         CASE(kQuadSwapY)
         CASE(kQuadSwapDiagonal)
+        CASE(kSubgroupMatrixStore)
         case core::BuiltinFn::kNone:
             break;
     }
diff --git a/src/tint/utils/protos/ir/ir.proto b/src/tint/utils/protos/ir/ir.proto
index a86a749..93d0567 100644
--- a/src/tint/utils/protos/ir/ir.proto
+++ b/src/tint/utils/protos/ir/ir.proto
@@ -666,4 +666,5 @@
     quad_swap_diagonal = 142;
     subgroup_inclusive_add = 143;
     subgroup_inclusive_mul = 144;
+    subgroup_matrix_store = 146;
 }
diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl
index fd5b9f9..ed365d0 100644
--- a/test/tint/builtins/gen/gen.wgsl.tmpl
+++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -288,8 +288,11 @@
 {{-   $overload := $permutation.Overload -}}
 {{-   $builtin_name := $permutation.Intrinsic.Name -}}
 
-{{- /* Emit 'enable subgroups' and 'enable subgroups_f16' if required */ -}}
-{{-   if or (HasPrefix $builtin_name "subgroup") (HasPrefix $builtin_name "quad")}}
+{{- /* Emit 'enable chromium_experimental_subgroup_matrix' if required */ -}}
+{{-   if (HasPrefix $builtin_name "subgroupMatrix")}}
+enable chromium_experimental_subgroup_matrix;
+{{/* Emit 'enable subgroups' and 'enable subgroups_f16' if required */ -}}
+{{-   else if or (HasPrefix $builtin_name "subgroup") (HasPrefix $builtin_name "quad")}}
 enable subgroups;
 {{    end -}}
 
@@ -433,6 +436,7 @@
 {{-     else if eq .Target.Name "vec"        -}}vec{{index .TemplateArguments 0}}<{{template "Type" (ElementType .)}}>
 {{-     else if eq .Target.Name "mat"        -}}mat{{index .TemplateArguments 0}}x{{index .TemplateArguments 1}}<{{template "Type" (ElementType .)}}>
 {{-     else if eq .Target.Name "runtime_array" -}}array<{{template "Type" (ElementType .)}}>
+{{-     else if eq .Target.Name "subgroup_matrix" -}}subgroup_matrix_{{index .TemplateArguments 0}}<{{template "Type" (ElementType .)}}, {{index .TemplateArguments 2}}, {{index .TemplateArguments 3}}>
 {{-     else if HasPrefix .Target.Name "vec" -}}{{.Target.Name}}<{{template "Type" (ElementType .)}}>
 {{-     else if HasPrefix .Target.Name "mat" -}}{{.Target.Name}}<{{template "Type" (ElementType .)}}>
 {{-     else                                 -}}{{.Target.Name}}{{template "TemplateArguments" .TemplateArguments}}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl
new file mode 100644
index 0000000..3dafc4d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<result, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_09c565() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..94bf006
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..81ee149
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.msl
new file mode 100644
index 0000000..69ac55a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.wgsl
new file mode 100644
index 0000000..35f44d3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/09c565.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl
new file mode 100644
index 0000000..8cf7a2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<result, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_0d6927() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..12038b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..001f785
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.msl
new file mode 100644
index 0000000..bf7380c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.wgsl
new file mode 100644
index 0000000..ca35a71
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0d6927.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl
new file mode 100644
index 0000000..85361b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<left, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_27338e() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9239c6c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_left<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..61e6aeb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_left<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.msl
new file mode 100644
index 0000000..abfadca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.wgsl
new file mode 100644
index 0000000..5fd1c4c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/27338e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl
new file mode 100644
index 0000000..ffceaff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<right, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_2e04bd() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..036728a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_right<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8770b70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_right<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.msl
new file mode 100644
index 0000000..df4dd74
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl
new file mode 100644
index 0000000..c5c5582
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl
new file mode 100644
index 0000000..799bcc1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<right, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_3208c3() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..baa6245
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_right<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2e3901e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_right<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.msl
new file mode 100644
index 0000000..e9f8ad1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.wgsl
new file mode 100644
index 0000000..6432eaa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3208c3.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl
new file mode 100644
index 0000000..2dd8857
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<right, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_321539() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b05c7a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e77bd0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.msl
new file mode 100644
index 0000000..3dc5659
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.wgsl
new file mode 100644
index 0000000..45f019a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/321539.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl
new file mode 100644
index 0000000..f1a9d08
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<left, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_494f4e() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..46a4bf9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b30e855
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.msl
new file mode 100644
index 0000000..c648de3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.wgsl
new file mode 100644
index 0000000..e3560d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/494f4e.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl
new file mode 100644
index 0000000..84059e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<result, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_5644c4() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..64d8f5c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_result<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..829784e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_result<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.msl
new file mode 100644
index 0000000..70bcf37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.wgsl
new file mode 100644
index 0000000..918ffab
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5644c4.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl
new file mode 100644
index 0000000..e3036ad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<right, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_6dbaa2() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7b3b3e7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bc99f46
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.msl
new file mode 100644
index 0000000..d1c31e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl
new file mode 100644
index 0000000..cdef136
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl
new file mode 100644
index 0000000..75167b0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<right, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_7954ee() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3fcd861
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_right<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b844650
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_right<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.msl
new file mode 100644
index 0000000..59e8eff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.wgsl
new file mode 100644
index 0000000..bb0b2a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7954ee.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl
new file mode 100644
index 0000000..ff087f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<result, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_7a4769() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9e63ca0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_result<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..411f325
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_result<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.msl
new file mode 100644
index 0000000..3f1582f8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.wgsl
new file mode 100644
index 0000000..9ebcef3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/7a4769.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl
new file mode 100644
index 0000000..672fc82
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<result, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_8d55ef() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3b43a43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a3bc062
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.msl
new file mode 100644
index 0000000..3e6396a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..20b4271
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl
new file mode 100644
index 0000000..30f43a3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<right, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_9856cd() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b744077
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..427ac6f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.msl
new file mode 100644
index 0000000..7259c93
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.wgsl
new file mode 100644
index 0000000..88d86ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9856cd.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl
new file mode 100644
index 0000000..d60bbc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<right, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_9d8fcc() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..366edb1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ca72d80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.msl
new file mode 100644
index 0000000..380f3f5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl
new file mode 100644
index 0000000..f36d37d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_right<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl
new file mode 100644
index 0000000..fb313af
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<left, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_aa2174() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4a64543
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_left<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4d7de4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_left<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.msl
new file mode 100644
index 0000000..6958b51
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.wgsl
new file mode 100644
index 0000000..969d770
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/aa2174.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl
new file mode 100644
index 0000000..93de8bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<left, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_ba3ee8() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..330e2a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_left<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c33aa56
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_left<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.msl
new file mode 100644
index 0000000..7efb3aa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl
new file mode 100644
index 0000000..1d22fd0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl
new file mode 100644
index 0000000..3df138a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<left, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_cd3e65() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..89dfec9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..41217a9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl
@@ -0,0 +1,23 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.msl
new file mode 100644
index 0000000..3ae7669
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.msl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl
new file mode 100644
index 0000000..69328b1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl
new file mode 100644
index 0000000..89e65d2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<result, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_db58ad() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f45f058
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_result<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eca63d3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_result<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.msl
new file mode 100644
index 0000000..0f4cac3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.wgsl
new file mode 100644
index 0000000..7cf04cc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db58ad.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl
new file mode 100644
index 0000000..45a596c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<right, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_eb6865() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1574f5b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_right<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6fa6a9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_right<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.msl
new file mode 100644
index 0000000..b0147cf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.wgsl
new file mode 100644
index 0000000..3365603
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eb6865.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_right<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl
new file mode 100644
index 0000000..b00f89f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<result, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f2a4a2() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bfb40ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_result<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a04b458
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,34 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl:50:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_result<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.msl
new file mode 100644
index 0000000..afd0ff4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl
new file mode 100644
index 0000000..5d06cad
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_result<f16, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl
new file mode 100644
index 0000000..d358e9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl
@@ -0,0 +1,54 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<left, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f9dcbf() {
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..750d2e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_left<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c90a95d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl:48:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_left<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.msl
new file mode 100644
index 0000000..4c8c851
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl
new file mode 100644
index 0000000..d15b011
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  subgroupMatrixStore(&(sb_rw.arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl
new file mode 100644
index 0000000..1759491
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<left, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f9f8e7() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..610bc15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2c913b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.msl
new file mode 100644
index 0000000..03075eb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..f5258c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<u32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl
new file mode 100644
index 0000000..9b1244d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<left, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_fbb29b() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f16cc57
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b6f10f2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.msl
new file mode 100644
index 0000000..300bc96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl
new file mode 100644
index 0000000..7dc3e9a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_left<f32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl
new file mode 100644
index 0000000..aa07841
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl
@@ -0,0 +1,51 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<result, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_fd08c0() {
+  subgroupMatrixStore(&arg_0, 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eac65f1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8c407ff
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,22 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.msl
new file mode 100644
index 0000000..fdf2324
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.msl
@@ -0,0 +1,22 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl
new file mode 100644
index 0000000..d2f1c3e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  subgroupMatrixStore(&(arg_0), 1u, subgroup_matrix_result<i32, 8, 8>(), true, 1u);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl
new file mode 100644
index 0000000..3278a72
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<result, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_09c565() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3cb3edf
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4bf1181
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.msl
new file mode 100644
index 0000000..8027005
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.wgsl
new file mode 100644
index 0000000..0f36e13
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/09c565.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_09c565() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_09c565();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl
new file mode 100644
index 0000000..d4bfc78
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<result, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_0d6927() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f25564b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.dxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..04f6f01
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.fxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.msl
new file mode 100644
index 0000000..bbb019d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.wgsl
new file mode 100644
index 0000000..f3e16ce
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0d6927.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_0d6927() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_0d6927();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl
new file mode 100644
index 0000000..c807c7e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<left, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_27338e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d3eca84
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_left<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8636cd2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_left<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.msl
new file mode 100644
index 0000000..ebf6a80
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.wgsl
new file mode 100644
index 0000000..b7f109f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/27338e.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_27338e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_27338e();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl
new file mode 100644
index 0000000..843f546
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<right, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_2e04bd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..16e1ae2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_right<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7c455cf
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_right<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.msl
new file mode 100644
index 0000000..0d511b1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl
new file mode 100644
index 0000000..9feecc0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2e04bd.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_2e04bd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_2e04bd();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl
new file mode 100644
index 0000000..68044ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<right, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_3208c3() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7393292
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_right<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..221fa89
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_right<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.msl
new file mode 100644
index 0000000..cefdab9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.wgsl
new file mode 100644
index 0000000..a972381
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3208c3.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_3208c3() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_3208c3();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl
new file mode 100644
index 0000000..790cf61
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<right, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_321539() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3b7a1ad
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..16ec1ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.msl
new file mode 100644
index 0000000..f7eafb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.wgsl
new file mode 100644
index 0000000..3b74388
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/321539.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_321539() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_321539();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl
new file mode 100644
index 0000000..fd591d6
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<left, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_494f4e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7aeb5c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2208099
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.msl
new file mode 100644
index 0000000..1c1f49d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.wgsl
new file mode 100644
index 0000000..7e7bf04
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/494f4e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_494f4e() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_494f4e();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl
new file mode 100644
index 0000000..46ce3b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<i32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<i32, 64>, read_write>, u32, subgroup_matrix<result, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_5644c4() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9dc7a0e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_result<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5bbcf2f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<i32, 64>, u32, subgroup_matrix_result<i32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.msl
new file mode 100644
index 0000000..f83abdf
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.wgsl
new file mode 100644
index 0000000..a08b6fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5644c4.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<i32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_5644c4() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_5644c4();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl
new file mode 100644
index 0000000..2807bf8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<right, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_6dbaa2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5efe172
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5d0821a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.msl
new file mode 100644
index 0000000..c9c7550
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl
new file mode 100644
index 0000000..8250447
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6dbaa2.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_6dbaa2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_6dbaa2();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl
new file mode 100644
index 0000000..88fd1de
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<right, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_7954ee() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3db22d7d9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_right<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..fb8b964
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_right<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.msl
new file mode 100644
index 0000000..1bc83e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.wgsl
new file mode 100644
index 0000000..cecb8ed
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7954ee.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7954ee() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7954ee();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl
new file mode 100644
index 0000000..787bbe8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<result, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_7a4769() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..83e80ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_result<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d8a10a4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_result<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.msl
new file mode 100644
index 0000000..a229f87
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.wgsl
new file mode 100644
index 0000000..89335b5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/7a4769.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_7a4769() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_7a4769();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl
new file mode 100644
index 0000000..e4dc94a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<result, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_8d55ef() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bf74752
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..92d8d0b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.msl
new file mode 100644
index 0000000..da1c9c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..9b34516
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8d55ef.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_8d55ef() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_8d55ef();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl
new file mode 100644
index 0000000..6e351ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<right, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_9856cd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8dbf429
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..11d40f0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.msl
new file mode 100644
index 0000000..ebd8b78
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.wgsl
new file mode 100644
index 0000000..56a45ca
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9856cd.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_9856cd() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9856cd();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl
new file mode 100644
index 0000000..880ade4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<right, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_9d8fcc() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..866bad3
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5b88f4b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.msl
new file mode 100644
index 0000000..11be0ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl
new file mode 100644
index 0000000..302e07f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9d8fcc.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_9d8fcc() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_9d8fcc();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl
new file mode 100644
index 0000000..72aacde
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<left, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_aa2174() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e61c98d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.dxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_left<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..68553fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.fxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_left<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.msl
new file mode 100644
index 0000000..155572c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.wgsl
new file mode 100644
index 0000000..3cfbf8c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/aa2174.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_aa2174() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_aa2174();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl
new file mode 100644
index 0000000..5c06c76
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<left, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_ba3ee8() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6834b77
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_left<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f8687ff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_left<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.msl
new file mode 100644
index 0000000..7279a79
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl
new file mode 100644
index 0000000..11ef251
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba3ee8.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_ba3ee8() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_ba3ee8();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl
new file mode 100644
index 0000000..5feac11
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+var<workgroup> arg_0: array<f16, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f16, 64>, read_write>, u32, subgroup_matrix<left, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_cd3e65() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cc5b3d9a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.dxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9bb2844
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.fxc.hlsl
@@ -0,0 +1,27 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.msl
new file mode 100644
index 0000000..df4fa5a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.msl
@@ -0,0 +1,27 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl
new file mode 100644
index 0000000..7b73624
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/cd3e65.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+var<workgroup> arg_0 : array<f16, 64>;
+
+fn subgroupMatrixStore_cd3e65() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_cd3e65();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl
new file mode 100644
index 0000000..7f473a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<u32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<u32, 64>, read_write>, u32, subgroup_matrix<result, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_db58ad() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..293ab5f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_result<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..51eee8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<u32, 64>, u32, subgroup_matrix_result<u32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.msl
new file mode 100644
index 0000000..45482b60
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.wgsl
new file mode 100644
index 0000000..207f72f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db58ad.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<u32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_db58ad() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_db58ad();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl
new file mode 100644
index 0000000..4ef3428
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<right, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_eb6865() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2ce13b2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.dxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_right<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4e2e14a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.fxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_right<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.msl
new file mode 100644
index 0000000..2cbd84e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.wgsl
new file mode 100644
index 0000000..ab73dc4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eb6865.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_eb6865() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_eb6865();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl
new file mode 100644
index 0000000..ecec5d8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+struct SB_RW {
+  arg_0: array<f16, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f16, 64>, read_write>, u32, subgroup_matrix<result, f16, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f2a4a2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d684670
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_result<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e9715b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,38 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl:54:3 error: no matching call to 'subgroupMatrixStore(array<f16, 64>, u32, subgroup_matrix_result<f16, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.msl
new file mode 100644
index 0000000..7fa7b65
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl
new file mode 100644
index 0000000..d0c7762
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f2a4a2.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+struct SB_RW {
+  arg_0 : array<f16, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f2a4a2() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f2a4a2();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl
new file mode 100644
index 0000000..de13af6
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+struct SB_RW {
+  arg_0: array<f32, 64>,
+};
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+// fn subgroupMatrixStore(ptr<storage, array<f32, 64>, read_write>, u32, subgroup_matrix<left, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f9dcbf() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..603f2b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.dxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_left<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b187f3b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.fxc.hlsl
@@ -0,0 +1,37 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl:52:3 error: no matching call to 'subgroupMatrixStore(array<f32, 64>, u32, subgroup_matrix_left<f32, 8, 8>, bool, u32)'
+
+4 candidate functions:
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f32, C, R>  ✓ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<f16, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, f16, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<i32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, i32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+ • 'subgroupMatrixStore(ptr<workgroup' or 'storage, array<u32, AC>, write' or 'read_write>  ✗ , u32  ✓ , subgroup_matrix<K, u32, C, R>  ✗ , bool  ✓ , u32  ✓ )'
+
+  subgroupMatrixStore(&sb_rw.arg_0, arg_1, arg_2, arg_3, arg_4);
+  ^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.msl
new file mode 100644
index 0000000..f261f33
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.msl
@@ -0,0 +1,30 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@internal(disable_validation__binding_point_collision) @group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;struct SB_RW {
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl
new file mode 100644
index 0000000..ff6d4ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9dcbf.wgsl.expected.wgsl
@@ -0,0 +1,20 @@
+enable chromium_experimental_subgroup_matrix;
+
+struct SB_RW {
+  arg_0 : array<f32, 64>,
+}
+
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
+
+fn subgroupMatrixStore_f9dcbf() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(sb_rw.arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9dcbf();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl
new file mode 100644
index 0000000..19236ac
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<u32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<u32, 64>, read_write>, u32, subgroup_matrix<left, u32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_f9f8e7() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4a4e003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ffec34c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.msl
new file mode 100644
index 0000000..bcad11c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<u32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl
new file mode 100644
index 0000000..68eb5ec
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f9f8e7.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<u32, 64>;
+
+fn subgroupMatrixStore_f9f8e7() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_f9f8e7();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl
new file mode 100644
index 0000000..ee9f8c0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<f32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<f32, 64>, read_write>, u32, subgroup_matrix<left, f32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_fbb29b() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2dac387
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..948ec70
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl
new file mode 100644
index 0000000..1eb9436
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1182 internal compiler error: TINT_UNREACHABLE unhandled: subgroupMatrixStore
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.msl
new file mode 100644
index 0000000..66e80b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<f32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl
new file mode 100644
index 0000000..f557180
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fbb29b.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<f32, 64>;
+
+fn subgroupMatrixStore_fbb29b() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fbb29b();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl
new file mode 100644
index 0000000..172791f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+var<workgroup> arg_0: array<i32, 64>;
+
+// fn subgroupMatrixStore(ptr<workgroup, array<i32, 64>, read_write>, u32, subgroup_matrix<result, i32, 8, 8>, bool, u32)
+fn subgroupMatrixStore_fd08c0() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ee17c68
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.dxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d17f506
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.fxc.hlsl
@@ -0,0 +1,26 @@
+SKIP: INVALID
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl:41:8 error: HLSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.glsl
new file mode 100644
index 0000000..cc19bf0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dda740a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4709805
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: INVALID
+
+error: subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl
new file mode 100644
index 0000000..73f6a1d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.ir.msl
@@ -0,0 +1,11 @@
+SKIP: FAILED
+
+../../src/tint/lang/msl/writer/printer/printer.cc:1327 internal compiler error: TINT_ASSERT((sm->Type()->IsAnyOf<core::type::F32, core::type::F16>()))
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: signal: trace/BPT trap
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.msl
new file mode 100644
index 0000000..fceacd6
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.msl
@@ -0,0 +1,26 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
+
+Failed to generate: <dawn>/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl:41:8 error: MSL backend does not support extension 'chromium_experimental_subgroup_matrix'
+enable chromium_experimental_subgroup_matrix;var<workgroup> arg_0: array<i32, 64>;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c64c6a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.spvasm
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+error: subgroup matrices are not supported by the SPIR-V backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d8e1be
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/fd08c0.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+var<workgroup> arg_0 : array<i32, 64>;
+
+fn subgroupMatrixStore_fd08c0() {
+  var arg_1 = 1u;
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var arg_3 = true;
+  var arg_4 = 1u;
+  subgroupMatrixStore(&(arg_0), arg_1, arg_2, arg_3, arg_4);
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore_fd08c0();
+}
diff --git a/tools/src/tint/intrinsic/gen/gen.go b/tools/src/tint/intrinsic/gen/gen.go
index cef7f76..73b3f6d 100644
--- a/tools/src/tint/intrinsic/gen/gen.go
+++ b/tools/src/tint/intrinsic/gen/gen.go
@@ -520,6 +520,8 @@
 		return fqn.TemplateArguments[0].(sem.FullyQualifiedName)
 	case "runtime_array":
 		return fqn.TemplateArguments[0].(sem.FullyQualifiedName)
+	case "subgroup_matrix":
+		return fqn.TemplateArguments[1].(sem.FullyQualifiedName)
 	}
 	return fqn
 }
@@ -544,6 +546,8 @@
 		return DeepestElementType(fqn.TemplateArguments[0].(sem.FullyQualifiedName))
 	case "ptr":
 		return DeepestElementType(fqn.TemplateArguments[1].(sem.FullyQualifiedName))
+	case "subgroup_matrix":
+		return DeepestElementType(fqn.TemplateArguments[1].(sem.FullyQualifiedName))
 	}
 	return fqn
 }
diff --git a/tools/src/tint/intrinsic/gen/permutate.go b/tools/src/tint/intrinsic/gen/permutate.go
index 570a35d..3d2c3f5 100644
--- a/tools/src/tint/intrinsic/gen/permutate.go
+++ b/tools/src/tint/intrinsic/gen/permutate.go
@@ -221,6 +221,16 @@
 		case *sem.TemplateNumberParam:
 			// Currently all open numbers are used for vector / matrices
 			permutations := []int{2, 3, 4}
+
+			// Restrict the permutations for subgroup matrix builtins to avoid combinatorial explosion.
+			if overload.Decl.Name == "subgroupMatrixStore" {
+				if t.Name == "AC" {
+					permutations = []int{64}
+				} else {
+					permutations = []int{8}
+				}
+			}
+
 			permute = func() error {
 				for _, n := range permutations {
 					state.templateNumbers[t] = n