[spirv] Support `i8` and `u8` in `subgroupMatrixLoad`
This patch supports the overloads of `subgroupMatrixLoad()` and
with subgroup matrices using `i8` and `u8` as elements and
`array<i32>` or `array<u32>`.
Bug: 348702031, 403609083
Test: tint_unittests
Change-Id: I73e66049205c4421a4a35c3ca9127a6fd4c00e24
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/246796
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/tint/lang/spirv/intrinsic/data.cc b/src/tint/lang/spirv/intrinsic/data.cc
index d38e018..f669e08 100644
--- a/src/tint/lang/spirv/intrinsic/data.cc
+++ b/src/tint/lang/spirv/intrinsic/data.cc
@@ -2195,87 +2195,95 @@
/* [896] */ MatcherIndex(14),
/* [897] */ MatcherIndex(31),
/* [898] */ MatcherIndex(8),
- /* [899] */ MatcherIndex(1),
- /* [900] */ MatcherIndex(15),
+ /* [899] */ MatcherIndex(10),
+ /* [900] */ MatcherIndex(14),
/* [901] */ MatcherIndex(31),
/* [902] */ MatcherIndex(8),
- /* [903] */ MatcherIndex(10),
- /* [904] */ MatcherIndex(15),
+ /* [903] */ MatcherIndex(11),
+ /* [904] */ MatcherIndex(14),
/* [905] */ MatcherIndex(31),
/* [906] */ MatcherIndex(8),
- /* [907] */ MatcherIndex(11),
+ /* [907] */ MatcherIndex(1),
/* [908] */ MatcherIndex(15),
- /* [909] */ MatcherIndex(26),
- /* [910] */ MatcherIndex(0),
- /* [911] */ MatcherIndex(1),
- /* [912] */ MatcherIndex(26),
- /* [913] */ MatcherIndex(2),
+ /* [909] */ MatcherIndex(31),
+ /* [910] */ MatcherIndex(8),
+ /* [911] */ MatcherIndex(10),
+ /* [912] */ MatcherIndex(15),
+ /* [913] */ MatcherIndex(31),
/* [914] */ MatcherIndex(8),
- /* [915] */ MatcherIndex(26),
- /* [916] */ MatcherIndex(3),
- /* [917] */ MatcherIndex(8),
- /* [918] */ MatcherIndex(26),
+ /* [915] */ MatcherIndex(11),
+ /* [916] */ MatcherIndex(15),
+ /* [917] */ MatcherIndex(26),
+ /* [918] */ MatcherIndex(0),
/* [919] */ MatcherIndex(1),
- /* [920] */ MatcherIndex(8),
- /* [921] */ MatcherIndex(26),
- /* [922] */ MatcherIndex(2),
- /* [923] */ MatcherIndex(0),
- /* [924] */ MatcherIndex(26),
- /* [925] */ MatcherIndex(0),
- /* [926] */ MatcherIndex(7),
- /* [927] */ MatcherIndex(26),
- /* [928] */ MatcherIndex(3),
- /* [929] */ MatcherIndex(0),
- /* [930] */ MatcherIndex(26),
- /* [931] */ MatcherIndex(3),
- /* [932] */ MatcherIndex(1),
- /* [933] */ MatcherIndex(26),
- /* [934] */ MatcherIndex(3),
- /* [935] */ MatcherIndex(2),
- /* [936] */ MatcherIndex(26),
- /* [937] */ MatcherIndex(4),
- /* [938] */ MatcherIndex(0),
- /* [939] */ MatcherIndex(26),
- /* [940] */ MatcherIndex(4),
- /* [941] */ MatcherIndex(1),
- /* [942] */ MatcherIndex(26),
- /* [943] */ MatcherIndex(4),
- /* [944] */ MatcherIndex(2),
- /* [945] */ MatcherIndex(26),
- /* [946] */ MatcherIndex(4),
- /* [947] */ MatcherIndex(3),
- /* [948] */ MatcherIndex(26),
- /* [949] */ MatcherIndex(0),
- /* [950] */ MatcherIndex(2),
- /* [951] */ MatcherIndex(26),
+ /* [920] */ MatcherIndex(26),
+ /* [921] */ MatcherIndex(2),
+ /* [922] */ MatcherIndex(8),
+ /* [923] */ MatcherIndex(26),
+ /* [924] */ MatcherIndex(3),
+ /* [925] */ MatcherIndex(8),
+ /* [926] */ MatcherIndex(26),
+ /* [927] */ MatcherIndex(1),
+ /* [928] */ MatcherIndex(8),
+ /* [929] */ MatcherIndex(26),
+ /* [930] */ MatcherIndex(2),
+ /* [931] */ MatcherIndex(0),
+ /* [932] */ MatcherIndex(26),
+ /* [933] */ MatcherIndex(0),
+ /* [934] */ MatcherIndex(7),
+ /* [935] */ MatcherIndex(26),
+ /* [936] */ MatcherIndex(3),
+ /* [937] */ MatcherIndex(0),
+ /* [938] */ MatcherIndex(26),
+ /* [939] */ MatcherIndex(3),
+ /* [940] */ MatcherIndex(1),
+ /* [941] */ MatcherIndex(26),
+ /* [942] */ MatcherIndex(3),
+ /* [943] */ MatcherIndex(2),
+ /* [944] */ MatcherIndex(26),
+ /* [945] */ MatcherIndex(4),
+ /* [946] */ MatcherIndex(0),
+ /* [947] */ MatcherIndex(26),
+ /* [948] */ MatcherIndex(4),
+ /* [949] */ MatcherIndex(1),
+ /* [950] */ MatcherIndex(26),
+ /* [951] */ MatcherIndex(4),
/* [952] */ MatcherIndex(2),
- /* [953] */ MatcherIndex(7),
- /* [954] */ MatcherIndex(16),
- /* [955] */ MatcherIndex(8),
- /* [956] */ MatcherIndex(16),
+ /* [953] */ MatcherIndex(26),
+ /* [954] */ MatcherIndex(4),
+ /* [955] */ MatcherIndex(3),
+ /* [956] */ MatcherIndex(26),
/* [957] */ MatcherIndex(0),
- /* [958] */ MatcherIndex(16),
- /* [959] */ MatcherIndex(10),
- /* [960] */ MatcherIndex(16),
- /* [961] */ MatcherIndex(11),
+ /* [958] */ MatcherIndex(2),
+ /* [959] */ MatcherIndex(26),
+ /* [960] */ MatcherIndex(2),
+ /* [961] */ MatcherIndex(7),
/* [962] */ MatcherIndex(16),
- /* [963] */ MatcherIndex(1),
- /* [964] */ MatcherIndex(34),
+ /* [963] */ MatcherIndex(8),
+ /* [964] */ MatcherIndex(16),
/* [965] */ MatcherIndex(0),
- /* [966] */ MatcherIndex(17),
- /* [967] */ MatcherIndex(0),
- /* [968] */ MatcherIndex(21),
- /* [969] */ MatcherIndex(0),
- /* [970] */ MatcherIndex(25),
- /* [971] */ MatcherIndex(0),
- /* [972] */ MatcherIndex(37),
- /* [973] */ MatcherIndex(36),
- /* [974] */ MatcherIndex(38),
- /* [975] */ MatcherIndex(41),
- /* [976] */ MatcherIndex(40),
- /* [977] */ MatcherIndex(9),
- /* [978] */ MatcherIndex(39),
- /* [979] */ MatcherIndex(42),
+ /* [966] */ MatcherIndex(16),
+ /* [967] */ MatcherIndex(10),
+ /* [968] */ MatcherIndex(16),
+ /* [969] */ MatcherIndex(11),
+ /* [970] */ MatcherIndex(16),
+ /* [971] */ MatcherIndex(1),
+ /* [972] */ MatcherIndex(34),
+ /* [973] */ MatcherIndex(0),
+ /* [974] */ MatcherIndex(17),
+ /* [975] */ MatcherIndex(0),
+ /* [976] */ MatcherIndex(21),
+ /* [977] */ MatcherIndex(0),
+ /* [978] */ MatcherIndex(25),
+ /* [979] */ MatcherIndex(0),
+ /* [980] */ MatcherIndex(37),
+ /* [981] */ MatcherIndex(36),
+ /* [982] */ MatcherIndex(38),
+ /* [983] */ MatcherIndex(41),
+ /* [984] */ MatcherIndex(40),
+ /* [985] */ MatcherIndex(9),
+ /* [986] */ MatcherIndex(39),
+ /* [987] */ MatcherIndex(42),
};
static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -2375,7 +2383,7 @@
{
/* [18] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(915),
+ /* matcher_indices */ MatcherIndicesIndex(923),
},
{
/* [19] */
@@ -2435,7 +2443,7 @@
{
/* [30] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [31] */
@@ -2495,7 +2503,7 @@
{
/* [42] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [43] */
@@ -2555,7 +2563,7 @@
{
/* [54] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [55] */
@@ -2585,7 +2593,7 @@
{
/* [60] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [61] */
@@ -2645,7 +2653,7 @@
{
/* [72] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [73] */
@@ -2825,7 +2833,7 @@
{
/* [108] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(915),
+ /* matcher_indices */ MatcherIndicesIndex(923),
},
{
/* [109] */
@@ -2875,7 +2883,7 @@
{
/* [118] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [119] */
@@ -2925,7 +2933,7 @@
{
/* [128] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [129] */
@@ -2975,7 +2983,7 @@
{
/* [138] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [139] */
@@ -3000,7 +3008,7 @@
{
/* [143] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [144] */
@@ -3025,7 +3033,7 @@
{
/* [148] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(915),
+ /* matcher_indices */ MatcherIndicesIndex(923),
},
{
/* [149] */
@@ -3075,7 +3083,7 @@
{
/* [158] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [159] */
@@ -3125,7 +3133,7 @@
{
/* [168] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [169] */
@@ -3175,7 +3183,7 @@
{
/* [178] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [179] */
@@ -3225,7 +3233,7 @@
{
/* [188] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [189] */
@@ -3275,7 +3283,7 @@
{
/* [198] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [199] */
@@ -3300,7 +3308,7 @@
{
/* [203] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [204] */
@@ -3325,7 +3333,7 @@
{
/* [208] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [209] */
@@ -3375,7 +3383,7 @@
{
/* [218] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [219] */
@@ -3425,7 +3433,7 @@
{
/* [228] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [229] */
@@ -3475,7 +3483,7 @@
{
/* [238] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [239] */
@@ -3525,7 +3533,7 @@
{
/* [248] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [249] */
@@ -3550,7 +3558,7 @@
{
/* [253] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [254] */
@@ -3600,7 +3608,7 @@
{
/* [263] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [264] */
@@ -3625,7 +3633,7 @@
{
/* [268] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(918),
+ /* matcher_indices */ MatcherIndicesIndex(926),
},
{
/* [269] */
@@ -3675,7 +3683,7 @@
{
/* [278] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [279] */
@@ -3725,7 +3733,7 @@
{
/* [288] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [289] */
@@ -3750,7 +3758,7 @@
{
/* [293] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [294] */
@@ -3770,7 +3778,7 @@
{
/* [297] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(897),
+ /* matcher_indices */ MatcherIndicesIndex(905),
},
{
/* [298] */
@@ -3795,7 +3803,7 @@
{
/* [302] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(901),
+ /* matcher_indices */ MatcherIndicesIndex(909),
},
{
/* [303] */
@@ -3820,7 +3828,7 @@
{
/* [307] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(905),
+ /* matcher_indices */ MatcherIndicesIndex(913),
},
{
/* [308] */
@@ -3910,7 +3918,7 @@
{
/* [325] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [326] */
@@ -4150,7 +4158,7 @@
{
/* [373] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [374] */
@@ -4230,7 +4238,7 @@
{
/* [389] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [390] */
@@ -4250,7 +4258,7 @@
{
/* [393] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [394] */
@@ -4270,7 +4278,7 @@
{
/* [397] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(915),
+ /* matcher_indices */ MatcherIndicesIndex(923),
},
{
/* [398] */
@@ -4310,7 +4318,7 @@
{
/* [405] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [406] */
@@ -4350,7 +4358,7 @@
{
/* [413] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [414] */
@@ -4390,7 +4398,7 @@
{
/* [421] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [422] */
@@ -4430,7 +4438,7 @@
{
/* [429] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [430] */
@@ -4470,7 +4478,7 @@
{
/* [437] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [438] */
@@ -4490,7 +4498,7 @@
{
/* [441] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [442] */
@@ -4510,7 +4518,7 @@
{
/* [445] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [446] */
@@ -4550,7 +4558,7 @@
{
/* [453] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [454] */
@@ -4590,7 +4598,7 @@
{
/* [461] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [462] */
@@ -4630,7 +4638,7 @@
{
/* [469] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [470] */
@@ -4670,7 +4678,7 @@
{
/* [477] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [478] */
@@ -4690,7 +4698,7 @@
{
/* [481] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
/* [482] */
@@ -4730,7 +4738,7 @@
{
/* [489] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [490] */
@@ -4770,7 +4778,7 @@
{
/* [497] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [498] */
@@ -4810,7 +4818,7 @@
{
/* [505] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [506] */
@@ -4830,7 +4838,7 @@
{
/* [509] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [510] */
@@ -4850,7 +4858,7 @@
{
/* [513] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(918),
+ /* matcher_indices */ MatcherIndicesIndex(926),
},
{
/* [514] */
@@ -4890,7 +4898,7 @@
{
/* [521] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [522] */
@@ -4930,7 +4938,7 @@
{
/* [529] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [530] */
@@ -4950,7 +4958,7 @@
{
/* [533] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [534] */
@@ -4990,7 +4998,7 @@
{
/* [541] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [542] */
@@ -5030,7 +5038,7 @@
{
/* [549] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [550] */
@@ -5055,7 +5063,7 @@
{
/* [554] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [555] */
@@ -5075,7 +5083,7 @@
{
/* [558] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(958),
+ /* matcher_indices */ MatcherIndicesIndex(966),
},
{
/* [559] */
@@ -5095,7 +5103,7 @@
{
/* [562] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(960),
+ /* matcher_indices */ MatcherIndicesIndex(968),
},
{
/* [563] */
@@ -5115,7 +5123,7 @@
{
/* [566] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [567] */
@@ -5135,7 +5143,7 @@
{
/* [570] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(958),
+ /* matcher_indices */ MatcherIndicesIndex(966),
},
{
/* [571] */
@@ -5155,7 +5163,7 @@
{
/* [574] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(960),
+ /* matcher_indices */ MatcherIndicesIndex(968),
},
{
/* [575] */
@@ -5175,7 +5183,7 @@
{
/* [578] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [579] */
@@ -5195,7 +5203,7 @@
{
/* [582] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(958),
+ /* matcher_indices */ MatcherIndicesIndex(966),
},
{
/* [583] */
@@ -5215,7 +5223,7 @@
{
/* [586] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(960),
+ /* matcher_indices */ MatcherIndicesIndex(968),
},
{
/* [587] */
@@ -5235,7 +5243,7 @@
{
/* [590] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(954),
+ /* matcher_indices */ MatcherIndicesIndex(962),
},
{
/* [591] */
@@ -5255,7 +5263,7 @@
{
/* [594] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(958),
+ /* matcher_indices */ MatcherIndicesIndex(966),
},
{
/* [595] */
@@ -5275,7 +5283,7 @@
{
/* [598] */
/* usage */ core::ParameterUsage::kTexel,
- /* matcher_indices */ MatcherIndicesIndex(960),
+ /* matcher_indices */ MatcherIndicesIndex(968),
},
{
/* [599] */
@@ -5295,12 +5303,12 @@
{
/* [602] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [603] */
/* usage */ core::ParameterUsage::kCount,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [604] */
@@ -5315,12 +5323,12 @@
{
/* [606] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [607] */
/* usage */ core::ParameterUsage::kCount,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [608] */
@@ -5345,17 +5353,17 @@
{
/* [612] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(847),
+ /* matcher_indices */ MatcherIndicesIndex(897),
},
{
/* [613] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(852),
+ /* matcher_indices */ MatcherIndicesIndex(533),
},
{
/* [614] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(842),
+ /* matcher_indices */ MatcherIndicesIndex(533),
},
{
/* [615] */
@@ -5365,532 +5373,532 @@
{
/* [616] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(861),
+ /* matcher_indices */ MatcherIndicesIndex(901),
},
{
/* [617] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(533),
},
{
/* [618] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(533),
},
{
/* [619] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(533),
+ },
+ {
+ /* [620] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(847),
+ },
+ {
+ /* [621] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(852),
+ },
+ {
+ /* [622] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(842),
+ },
+ {
+ /* [623] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(533),
+ },
+ {
+ /* [624] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(861),
+ },
+ {
+ /* [625] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [626] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [627] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(235),
},
{
- /* [620] */
+ /* [628] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(8),
},
{
- /* [621] */
+ /* [629] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [622] */
+ /* [630] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(45),
},
{
- /* [623] */
+ /* [631] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(31),
},
{
- /* [624] */
+ /* [632] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [625] */
+ /* [633] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(66),
},
{
- /* [626] */
+ /* [634] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(649),
},
{
- /* [627] */
+ /* [635] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [628] */
+ /* [636] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(166),
},
{
- /* [629] */
+ /* [637] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(649),
},
{
- /* [630] */
+ /* [638] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [631] */
+ /* [639] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(244),
},
{
- /* [632] */
+ /* [640] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(31),
},
{
- /* [633] */
+ /* [641] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [634] */
+ /* [642] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(1),
},
{
- /* [635] */
+ /* [643] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(42),
},
{
- /* [636] */
+ /* [644] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [637] */
+ /* [645] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(12),
},
{
- /* [638] */
+ /* [646] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(659),
},
{
- /* [639] */
+ /* [647] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [640] */
+ /* [648] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(253),
},
{
- /* [641] */
+ /* [649] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(42),
},
{
- /* [642] */
+ /* [650] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [643] */
+ /* [651] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(514),
},
{
- /* [644] */
+ /* [652] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(52),
},
{
- /* [645] */
+ /* [653] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [646] */
+ /* [654] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(523),
},
{
- /* [647] */
+ /* [655] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(52),
},
{
- /* [648] */
+ /* [656] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [649] */
+ /* [657] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(532),
},
{
- /* [650] */
+ /* [658] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(52),
},
{
- /* [651] */
+ /* [659] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [652] */
+ /* [660] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(541),
},
{
- /* [653] */
+ /* [661] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(53),
},
{
- /* [654] */
+ /* [662] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [655] */
+ /* [663] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(550),
},
{
- /* [656] */
+ /* [664] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(53),
},
{
- /* [657] */
+ /* [665] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [658] */
+ /* [666] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(559),
},
{
- /* [659] */
+ /* [667] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(53),
},
{
- /* [660] */
+ /* [668] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [661] */
+ /* [669] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(568),
},
{
- /* [662] */
+ /* [670] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [663] */
+ /* [671] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [664] */
+ /* [672] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(577),
},
{
- /* [665] */
+ /* [673] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [666] */
+ /* [674] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [667] */
+ /* [675] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(586),
},
{
- /* [668] */
+ /* [676] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [669] */
+ /* [677] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [670] */
+ /* [678] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(595),
},
{
- /* [671] */
+ /* [679] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [672] */
+ /* [680] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [673] */
+ /* [681] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(604),
},
{
- /* [674] */
+ /* [682] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [675] */
+ /* [683] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [676] */
+ /* [684] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(613),
},
{
- /* [677] */
+ /* [685] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(669),
},
{
- /* [678] */
+ /* [686] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [679] */
+ /* [687] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(125),
},
{
- /* [680] */
+ /* [688] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(2),
},
{
- /* [681] */
+ /* [689] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [682] */
+ /* [690] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(125),
},
{
- /* [683] */
+ /* [691] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(912),
+ /* matcher_indices */ MatcherIndicesIndex(920),
},
{
- /* [684] */
+ /* [692] */
/* usage */ core::ParameterUsage::kImageOperands,
/* matcher_indices */ MatcherIndicesIndex(533),
},
{
- /* [685] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(858),
- },
- {
- /* [686] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(43),
- },
- {
- /* [687] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(43),
- },
- {
- /* [688] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(858),
- },
- {
- /* [689] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(909),
- },
- {
- /* [690] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(909),
- },
- {
- /* [691] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(948),
- },
- {
- /* [692] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(924),
- },
- {
/* [693] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(909),
+ /* matcher_indices */ MatcherIndicesIndex(858),
},
{
/* [694] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(909),
+ /* matcher_indices */ MatcherIndicesIndex(43),
},
{
/* [695] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(939),
+ /* matcher_indices */ MatcherIndicesIndex(43),
},
{
/* [696] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(942),
+ /* matcher_indices */ MatcherIndicesIndex(858),
},
{
/* [697] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(945),
+ /* matcher_indices */ MatcherIndicesIndex(917),
},
{
/* [698] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(817),
+ /* matcher_indices */ MatcherIndicesIndex(917),
},
{
/* [699] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(817),
+ /* matcher_indices */ MatcherIndicesIndex(956),
},
{
/* [700] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(43),
+ /* matcher_indices */ MatcherIndicesIndex(932),
},
{
/* [701] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(817),
+ /* matcher_indices */ MatcherIndicesIndex(917),
},
{
/* [702] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(817),
+ /* matcher_indices */ MatcherIndicesIndex(917),
},
{
/* [703] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(817),
+ /* matcher_indices */ MatcherIndicesIndex(947),
},
{
/* [704] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(877),
+ /* matcher_indices */ MatcherIndicesIndex(950),
},
{
/* [705] */
- /* usage */ core::ParameterUsage::kBase,
- /* matcher_indices */ MatcherIndicesIndex(43),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(953),
},
{
/* [706] */
- /* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(972),
- },
- {
- /* [707] */
- /* usage */ core::ParameterUsage::kCount,
- /* matcher_indices */ MatcherIndicesIndex(972),
- },
- {
- /* [708] */
- /* usage */ core::ParameterUsage::kBase,
+ /* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(817),
},
{
+ /* [707] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(817),
+ },
+ {
+ /* [708] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(43),
+ },
+ {
/* [709] */
- /* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(817),
},
{
/* [710] */
- /* usage */ core::ParameterUsage::kCount,
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(817),
},
{
/* [711] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(857),
+ /* matcher_indices */ MatcherIndicesIndex(817),
},
{
/* [712] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(43),
+ /* matcher_indices */ MatcherIndicesIndex(877),
},
{
/* [713] */
- /* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(406),
+ /* usage */ core::ParameterUsage::kBase,
+ /* matcher_indices */ MatcherIndicesIndex(43),
},
{
/* [714] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* usage */ core::ParameterUsage::kOffset,
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [715] */
- /* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(415),
+ /* usage */ core::ParameterUsage::kCount,
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [716] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* usage */ core::ParameterUsage::kBase,
+ /* matcher_indices */ MatcherIndicesIndex(817),
},
{
/* [717] */
- /* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(424),
+ /* usage */ core::ParameterUsage::kOffset,
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [718] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* usage */ core::ParameterUsage::kCount,
+ /* matcher_indices */ MatcherIndicesIndex(980),
},
{
/* [719] */
- /* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(433),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(857),
},
{
/* [720] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(43),
},
{
/* [721] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(442),
+ /* matcher_indices */ MatcherIndicesIndex(406),
},
{
/* [722] */
@@ -5900,7 +5908,7 @@
{
/* [723] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(451),
+ /* matcher_indices */ MatcherIndicesIndex(415),
},
{
/* [724] */
@@ -5910,227 +5918,267 @@
{
/* [725] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(460),
+ /* matcher_indices */ MatcherIndicesIndex(424),
},
{
/* [726] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(52),
},
{
/* [727] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(469),
+ /* matcher_indices */ MatcherIndicesIndex(433),
},
{
/* [728] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(52),
},
{
/* [729] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(478),
+ /* matcher_indices */ MatcherIndicesIndex(442),
},
{
/* [730] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(52),
},
{
/* [731] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(487),
+ /* matcher_indices */ MatcherIndicesIndex(451),
},
{
/* [732] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(8),
+ /* matcher_indices */ MatcherIndicesIndex(52),
},
{
/* [733] */
/* usage */ core::ParameterUsage::kImage,
- /* matcher_indices */ MatcherIndicesIndex(622),
+ /* matcher_indices */ MatcherIndicesIndex(460),
},
{
/* [734] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [735] */
+ /* usage */ core::ParameterUsage::kImage,
+ /* matcher_indices */ MatcherIndicesIndex(469),
+ },
+ {
+ /* [736] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [737] */
+ /* usage */ core::ParameterUsage::kImage,
+ /* matcher_indices */ MatcherIndicesIndex(478),
+ },
+ {
+ /* [738] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [739] */
+ /* usage */ core::ParameterUsage::kImage,
+ /* matcher_indices */ MatcherIndicesIndex(487),
+ },
+ {
+ /* [740] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(8),
+ },
+ {
+ /* [741] */
+ /* usage */ core::ParameterUsage::kImage,
+ /* matcher_indices */ MatcherIndicesIndex(622),
+ },
+ {
+ /* [742] */
/* usage */ core::ParameterUsage::kCoords,
/* matcher_indices */ MatcherIndicesIndex(53),
},
{
- /* [735] */
+ /* [743] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(873),
},
{
- /* [736] */
+ /* [744] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(877),
},
{
- /* [737] */
+ /* [745] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(881),
},
{
- /* [738] */
+ /* [746] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(43),
},
{
- /* [739] */
+ /* [747] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(881),
},
{
- /* [740] */
+ /* [748] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(817),
},
{
- /* [741] */
+ /* [749] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(921),
+ /* matcher_indices */ MatcherIndicesIndex(929),
},
{
- /* [742] */
+ /* [750] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(823),
},
{
- /* [743] */
+ /* [751] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(930),
+ /* matcher_indices */ MatcherIndicesIndex(938),
},
{
- /* [744] */
+ /* [752] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(933),
+ /* matcher_indices */ MatcherIndicesIndex(941),
},
{
- /* [745] */
+ /* [753] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(43),
},
{
- /* [746] */
+ /* [754] */
/* usage */ core::ParameterUsage::kI,
/* matcher_indices */ MatcherIndicesIndex(885),
},
{
- /* [747] */
+ /* [755] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(817),
},
{
- /* [748] */
+ /* [756] */
/* usage */ core::ParameterUsage::kI,
/* matcher_indices */ MatcherIndicesIndex(815),
},
{
- /* [749] */
+ /* [757] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(43),
},
{
- /* [750] */
+ /* [758] */
/* usage */ core::ParameterUsage::kI,
/* matcher_indices */ MatcherIndicesIndex(889),
},
{
- /* [751] */
+ /* [759] */
/* usage */ core::ParameterUsage::kX,
- /* matcher_indices */ MatcherIndicesIndex(921),
+ /* matcher_indices */ MatcherIndicesIndex(929),
},
{
- /* [752] */
+ /* [760] */
/* usage */ core::ParameterUsage::kI,
/* matcher_indices */ MatcherIndicesIndex(821),
},
{
- /* [753] */
+ /* [761] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(298),
},
{
- /* [754] */
+ /* [762] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(307),
},
{
- /* [755] */
+ /* [763] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(316),
},
{
- /* [756] */
+ /* [764] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(325),
},
{
- /* [757] */
+ /* [765] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(334),
},
{
- /* [758] */
+ /* [766] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(343),
},
{
- /* [759] */
+ /* [767] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(352),
},
{
- /* [760] */
+ /* [768] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(361),
},
{
- /* [761] */
+ /* [769] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(370),
},
{
- /* [762] */
+ /* [770] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(379),
},
{
- /* [763] */
+ /* [771] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(388),
},
{
- /* [764] */
+ /* [772] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(397),
},
{
- /* [765] */
+ /* [773] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(496),
},
{
- /* [766] */
+ /* [774] */
/* usage */ core::ParameterUsage::kImage,
/* matcher_indices */ MatcherIndicesIndex(505),
},
{
- /* [767] */
+ /* [775] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(966),
+ /* matcher_indices */ MatcherIndicesIndex(974),
},
{
- /* [768] */
+ /* [776] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(968),
+ /* matcher_indices */ MatcherIndicesIndex(976),
},
{
- /* [769] */
+ /* [777] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(970),
+ /* matcher_indices */ MatcherIndicesIndex(978),
},
};
@@ -6159,13 +6207,13 @@
{
/* [3] */
/* name */ "Z",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [4] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
+ /* matcher_indices */ MatcherIndicesIndex(982),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6201,19 +6249,19 @@
{
/* [10] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [11] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
+ /* matcher_indices */ MatcherIndicesIndex(982),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [12] */
/* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6237,13 +6285,13 @@
{
/* [16] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [17] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
+ /* matcher_indices */ MatcherIndicesIndex(982),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6267,13 +6315,13 @@
{
/* [21] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [22] */
/* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6297,25 +6345,25 @@
{
/* [26] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [27] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [28] */
/* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [29] */
/* name */ "V",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6327,13 +6375,13 @@
{
/* [31] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* matcher_indices */ MatcherIndicesIndex(981),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [32] */
/* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6351,7 +6399,7 @@
{
/* [35] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(978),
+ /* matcher_indices */ MatcherIndicesIndex(986),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6369,493 +6417,493 @@
{
/* [38] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(979),
+ /* matcher_indices */ MatcherIndicesIndex(832),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [39] */
- /* name */ "TR",
- /* matcher_indices */ MatcherIndicesIndex(979),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [40] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [41] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [42] */
/* name */ "K",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [43] */
+ /* [40] */
/* name */ "S",
/* matcher_indices */ MatcherIndicesIndex(658),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [44] */
+ /* [41] */
/* name */ "C",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
+ /* [42] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [43] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(832),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [44] */
+ /* name */ "K",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
/* [45] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [46] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [47] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [48] */
- /* name */ "Z",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [49] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [50] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [51] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(976),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [52] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [53] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [54] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [55] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [56] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [57] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [58] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [59] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [60] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [61] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [62] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [63] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(9),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [64] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [65] */
- /* name */ "Z",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [66] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [67] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [68] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(743),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [69] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [70] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [71] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [72] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(752),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [73] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [74] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [75] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [76] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(761),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [77] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [78] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [79] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [80] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(770),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [81] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [82] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [83] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [84] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(779),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [85] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [86] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [87] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [88] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(788),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [89] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [90] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [91] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [92] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [93] */
- /* name */ "K",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [94] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [95] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [96] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [97] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [98] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [99] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [100] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [101] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [102] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [103] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(977),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [104] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [105] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [106] */
- /* name */ "B",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [107] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [108] */
- /* name */ "K",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [109] */
/* name */ "S",
/* matcher_indices */ MatcherIndicesIndex(831),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [110] */
+ /* [46] */
/* name */ "C",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [111] */
+ /* [47] */
/* name */ "R",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [112] */
+ /* [48] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(987),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [113] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(533),
+ /* [49] */
+ /* name */ "TR",
+ /* matcher_indices */ MatcherIndicesIndex(987),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [114] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(2),
+ /* [50] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [115] */
+ /* [51] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [52] */
+ /* name */ "K",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [53] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
+ /* matcher_indices */ MatcherIndicesIndex(982),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [116] */
+ /* [54] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [117] */
+ /* [55] */
+ /* name */ "Z",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [56] */
/* name */ "F",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [118] */
+ /* [57] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [58] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(984),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [59] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [60] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [61] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [62] */
/* name */ "A",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [119] */
+ /* [63] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [64] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [65] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [66] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [67] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [68] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [69] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [70] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(9),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [71] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [72] */
+ /* name */ "Z",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [73] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [74] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [75] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(743),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [76] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [77] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [78] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [79] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(752),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [80] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [81] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [82] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [83] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(761),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [84] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [85] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [86] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [87] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(770),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [88] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [89] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [90] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [91] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(779),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [92] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [93] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [94] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [95] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(788),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [96] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [97] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [98] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [99] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(981),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [100] */
+ /* name */ "K",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [101] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [102] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [103] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [104] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [105] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [106] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [107] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(981),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [108] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [109] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [110] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(985),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [111] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [112] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [113] */
+ /* name */ "B",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [114] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [115] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [116] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(533),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [117] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(2),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [118] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [119] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6872,26 +6920,26 @@
},
{
/* [122] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(524),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [123] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(9),
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [124] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [125] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(533),
+ /* matcher_indices */ MatcherIndicesIndex(524),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
@@ -6903,13 +6951,13 @@
{
/* [127] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [128] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(658),
+ /* matcher_indices */ MatcherIndicesIndex(533),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
@@ -6921,55 +6969,55 @@
{
/* [130] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [131] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(974),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(658),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [132] */
- /* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(9),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [133] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [134] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(982),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [135] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [136] */
- /* name */ "F",
+ /* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [137] */
/* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(106),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [138] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
+ /* matcher_indices */ MatcherIndicesIndex(983),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6981,13 +7029,13 @@
{
/* [140] */
/* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(797),
+ /* matcher_indices */ MatcherIndicesIndex(116),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [141] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
+ /* matcher_indices */ MatcherIndicesIndex(983),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -6999,13 +7047,13 @@
{
/* [143] */
/* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(806),
+ /* matcher_indices */ MatcherIndicesIndex(797),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [144] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(975),
+ /* matcher_indices */ MatcherIndicesIndex(983),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -7016,104 +7064,104 @@
},
{
/* [146] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(806),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [147] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(983),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [148] */
- /* name */ "M",
+ /* name */ "F",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [149] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(981),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [150] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [151] */
- /* name */ "N",
+ /* name */ "M",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [152] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [153] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [154] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(977),
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [155] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* matcher_indices */ MatcherIndicesIndex(981),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [156] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [157] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(977),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [158] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [159] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [160] */
/* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
+ /* [157] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(985),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [158] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(981),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [159] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [160] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(985),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
/* [161] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [162] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(981),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -7125,13 +7173,13 @@
{
/* [164] */
/* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* matcher_indices */ MatcherIndicesIndex(981),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [165] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(972),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -7142,26 +7190,44 @@
},
{
/* [167] */
- /* name */ "I",
- /* matcher_indices */ MatcherIndicesIndex(533),
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(980),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [168] */
/* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(980),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [169] */
+ /* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [169] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(973),
+ /* [170] */
+ /* name */ "I",
+ /* matcher_indices */ MatcherIndicesIndex(533),
/* kind */ TemplateInfo::Kind::kType,
},
{
- /* [170] */
+ /* [171] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [172] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(981),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [173] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(977),
+ /* matcher_indices */ MatcherIndicesIndex(985),
/* kind */ TemplateInfo::Kind::kNumber,
},
};
@@ -7176,9 +7242,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
- /* parameters */ ParameterIndex(679),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(60),
+ /* parameters */ ParameterIndex(687),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7187,9 +7253,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
- /* parameters */ ParameterIndex(682),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(134),
+ /* parameters */ ParameterIndex(690),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7198,9 +7264,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
+ /* templates */ TemplateIndex(134),
/* parameters */ ParameterIndex(142),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7209,9 +7275,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
+ /* templates */ TemplateIndex(134),
/* parameters */ ParameterIndex(392),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7220,9 +7286,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(107),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7231,9 +7297,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7242,9 +7308,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(152),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7253,9 +7319,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(157),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7264,9 +7330,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(400),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7275,9 +7341,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(404),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7286,9 +7352,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(408),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7297,9 +7363,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(412),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7308,9 +7374,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(112),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7319,9 +7385,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(117),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7330,9 +7396,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(172),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7341,9 +7407,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7352,9 +7418,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(416),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7363,9 +7429,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(420),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7374,9 +7440,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(122),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7385,9 +7451,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(127),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7396,9 +7462,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(424),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7407,9 +7473,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(428),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7418,9 +7484,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(192),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7429,9 +7495,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(197),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7440,9 +7506,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(432),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7451,9 +7517,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(436),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7462,9 +7528,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(202),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7473,9 +7539,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(440),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7484,9 +7550,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(49),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(512),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7495,9 +7561,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(444),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7508,7 +7574,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(524),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7519,7 +7585,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(528),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7530,7 +7596,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(516),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7541,7 +7607,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(520),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7550,9 +7616,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(448),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7561,9 +7627,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(452),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7574,7 +7640,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(532),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7583,9 +7649,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
+ /* templates */ TemplateIndex(134),
/* parameters */ ParameterIndex(480),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7594,9 +7660,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
+ /* templates */ TemplateIndex(134),
/* parameters */ ParameterIndex(142),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7605,9 +7671,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(147),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7616,9 +7682,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7627,9 +7693,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(484),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7638,9 +7704,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(488),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7649,9 +7715,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(152),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7660,9 +7726,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(157),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7671,9 +7737,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(162),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7682,9 +7748,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(167),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7693,9 +7759,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(23),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7704,9 +7770,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(29),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7715,9 +7781,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(492),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7726,9 +7792,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(496),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7737,9 +7803,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(172),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7748,9 +7814,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7759,9 +7825,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(182),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7770,9 +7836,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(187),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7781,9 +7847,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(35),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7792,9 +7858,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(41),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7803,9 +7869,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(500),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7814,9 +7880,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(504),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7825,9 +7891,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(192),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7836,9 +7902,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(197),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7847,9 +7913,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(508),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7858,9 +7924,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(202),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7869,9 +7935,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(49),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(512),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7880,9 +7946,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(207),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7893,7 +7959,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(516),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7904,7 +7970,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(520),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7913,9 +7979,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(212),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7924,9 +7990,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7937,7 +8003,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(524),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7948,7 +8014,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(528),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7959,7 +8025,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(532),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7968,9 +8034,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(131),
- /* parameters */ ParameterIndex(682),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(134),
+ /* parameters */ ParameterIndex(690),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7979,9 +8045,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(222),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7990,9 +8056,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(227),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8001,9 +8067,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(456),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8012,9 +8078,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(460),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8023,9 +8089,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(132),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8034,9 +8100,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(137),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8045,9 +8111,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(464),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8056,9 +8122,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(468),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8067,9 +8133,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8078,9 +8144,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(420),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8089,9 +8155,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(127),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8100,9 +8166,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(428),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8113,7 +8179,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(544),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8124,7 +8190,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(548),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8133,9 +8199,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(472),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8144,9 +8210,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(476),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8155,9 +8221,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(536),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8166,9 +8232,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(540),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8177,9 +8243,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(222),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8188,9 +8254,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(227),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8199,9 +8265,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(232),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8210,9 +8276,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(237),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8221,9 +8287,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(47),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8232,9 +8298,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(53),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8243,9 +8309,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(496),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8254,9 +8320,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8265,9 +8331,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(187),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8276,9 +8342,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(64),
+ /* templates */ TemplateIndex(71),
/* parameters */ ParameterIndex(41),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8287,9 +8353,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(53),
+ /* templates */ TemplateIndex(60),
/* parameters */ ParameterIndex(504),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8300,7 +8366,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(544),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8311,7 +8377,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(548),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8320,9 +8386,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(242),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8331,9 +8397,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(247),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8342,9 +8408,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
- /* parameters */ ParameterIndex(619),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* templates */ TemplateIndex(118),
+ /* parameters */ ParameterIndex(627),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8353,9 +8419,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
- /* parameters */ ParameterIndex(622),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* templates */ TemplateIndex(118),
+ /* parameters */ ParameterIndex(630),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8364,9 +8430,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
- /* parameters */ ParameterIndex(625),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* templates */ TemplateIndex(118),
+ /* parameters */ ParameterIndex(633),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8375,9 +8441,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
- /* parameters */ ParameterIndex(628),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* templates */ TemplateIndex(118),
+ /* parameters */ ParameterIndex(636),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8386,9 +8452,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
- /* parameters */ ParameterIndex(631),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* templates */ TemplateIndex(118),
+ /* parameters */ ParameterIndex(639),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8397,9 +8463,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
- /* parameters */ ParameterIndex(634),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(119),
+ /* parameters */ ParameterIndex(642),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8408,9 +8474,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
- /* parameters */ ParameterIndex(637),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(119),
+ /* parameters */ ParameterIndex(645),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8419,9 +8485,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
- /* parameters */ ParameterIndex(640),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(119),
+ /* parameters */ ParameterIndex(648),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8430,9 +8496,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(328),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8441,9 +8507,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(332),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8452,9 +8518,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(336),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8463,9 +8529,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(340),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8474,9 +8540,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(344),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8485,9 +8551,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(348),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8496,9 +8562,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(352),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8507,9 +8573,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(356),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8518,9 +8584,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(122),
- /* parameters */ ParameterIndex(643),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(125),
+ /* parameters */ ParameterIndex(651),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8529,9 +8595,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(125),
- /* parameters */ ParameterIndex(646),
- /* return_matcher_indices */ MatcherIndicesIndex(958),
+ /* templates */ TemplateIndex(128),
+ /* parameters */ ParameterIndex(654),
+ /* return_matcher_indices */ MatcherIndicesIndex(966),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8540,9 +8606,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(128),
- /* parameters */ ParameterIndex(649),
- /* return_matcher_indices */ MatcherIndicesIndex(960),
+ /* templates */ TemplateIndex(131),
+ /* parameters */ ParameterIndex(657),
+ /* return_matcher_indices */ MatcherIndicesIndex(968),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8551,9 +8617,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(122),
- /* parameters */ ParameterIndex(652),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(125),
+ /* parameters */ ParameterIndex(660),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8562,9 +8628,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(125),
- /* parameters */ ParameterIndex(655),
- /* return_matcher_indices */ MatcherIndicesIndex(958),
+ /* templates */ TemplateIndex(128),
+ /* parameters */ ParameterIndex(663),
+ /* return_matcher_indices */ MatcherIndicesIndex(966),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8573,9 +8639,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(128),
- /* parameters */ ParameterIndex(658),
- /* return_matcher_indices */ MatcherIndicesIndex(960),
+ /* templates */ TemplateIndex(131),
+ /* parameters */ ParameterIndex(666),
+ /* return_matcher_indices */ MatcherIndicesIndex(968),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8584,9 +8650,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(122),
- /* parameters */ ParameterIndex(661),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(125),
+ /* parameters */ ParameterIndex(669),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8595,9 +8661,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(125),
- /* parameters */ ParameterIndex(664),
- /* return_matcher_indices */ MatcherIndicesIndex(958),
+ /* templates */ TemplateIndex(128),
+ /* parameters */ ParameterIndex(672),
+ /* return_matcher_indices */ MatcherIndicesIndex(966),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8606,9 +8672,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(128),
- /* parameters */ ParameterIndex(667),
- /* return_matcher_indices */ MatcherIndicesIndex(960),
+ /* templates */ TemplateIndex(131),
+ /* parameters */ ParameterIndex(675),
+ /* return_matcher_indices */ MatcherIndicesIndex(968),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8617,9 +8683,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(122),
- /* parameters */ ParameterIndex(670),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* templates */ TemplateIndex(125),
+ /* parameters */ ParameterIndex(678),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8628,9 +8694,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(125),
- /* parameters */ ParameterIndex(673),
- /* return_matcher_indices */ MatcherIndicesIndex(958),
+ /* templates */ TemplateIndex(128),
+ /* parameters */ ParameterIndex(681),
+ /* return_matcher_indices */ MatcherIndicesIndex(966),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8639,9 +8705,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(128),
- /* parameters */ ParameterIndex(676),
- /* return_matcher_indices */ MatcherIndicesIndex(960),
+ /* templates */ TemplateIndex(131),
+ /* parameters */ ParameterIndex(684),
+ /* return_matcher_indices */ MatcherIndicesIndex(968),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8650,9 +8716,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(60),
- /* parameters */ ParameterIndex(733),
- /* return_matcher_indices */ MatcherIndicesIndex(962),
+ /* templates */ TemplateIndex(67),
+ /* parameters */ ParameterIndex(741),
+ /* return_matcher_indices */ MatcherIndicesIndex(970),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8661,9 +8727,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
+ /* templates */ TemplateIndex(118),
/* parameters */ ParameterIndex(360),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8672,9 +8738,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(87),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8683,9 +8749,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
+ /* templates */ TemplateIndex(118),
/* parameters */ ParameterIndex(364),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8694,9 +8760,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(53),
/* parameters */ ParameterIndex(92),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8705,9 +8771,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
+ /* templates */ TemplateIndex(118),
/* parameters */ ParameterIndex(368),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8716,9 +8782,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(115),
+ /* templates */ TemplateIndex(118),
/* parameters */ ParameterIndex(372),
- /* return_matcher_indices */ MatcherIndicesIndex(956),
+ /* return_matcher_indices */ MatcherIndicesIndex(964),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8727,9 +8793,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(376),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8738,9 +8804,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(97),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8749,9 +8815,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(380),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8760,9 +8826,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(47),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(102),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8771,9 +8837,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(384),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8782,9 +8848,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(388),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8793,8 +8859,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(753),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(761),
/* return_matcher_indices */ MatcherIndicesIndex(43),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8804,8 +8870,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(754),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(762),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8815,8 +8881,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(755),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(763),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8826,8 +8892,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(756),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(764),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8837,8 +8903,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(757),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(765),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8848,8 +8914,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(758),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(766),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8860,7 +8926,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(759),
+ /* parameters */ ParameterIndex(767),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8870,8 +8936,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(119),
- /* parameters */ ParameterIndex(760),
+ /* templates */ TemplateIndex(122),
+ /* parameters */ ParameterIndex(768),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8881,8 +8947,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(119),
- /* parameters */ ParameterIndex(761),
+ /* templates */ TemplateIndex(122),
+ /* parameters */ ParameterIndex(769),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8892,8 +8958,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(119),
- /* parameters */ ParameterIndex(762),
+ /* templates */ TemplateIndex(122),
+ /* parameters */ ParameterIndex(770),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8903,8 +8969,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(119),
- /* parameters */ ParameterIndex(763),
+ /* templates */ TemplateIndex(122),
+ /* parameters */ ParameterIndex(771),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8914,8 +8980,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(764),
+ /* templates */ TemplateIndex(63),
+ /* parameters */ ParameterIndex(772),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8925,7 +8991,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(552),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8936,7 +9002,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(556),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8947,7 +9013,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(560),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8958,7 +9024,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(564),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8969,7 +9035,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(568),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8980,7 +9046,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(572),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8991,7 +9057,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(576),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9002,7 +9068,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(580),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9013,7 +9079,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(584),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9024,7 +9090,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(588),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9035,7 +9101,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(592),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9046,7 +9112,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(116),
+ /* templates */ TemplateIndex(119),
/* parameters */ ParameterIndex(596),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9058,7 +9124,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(713),
+ /* parameters */ ParameterIndex(721),
/* return_matcher_indices */ MatcherIndicesIndex(43),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9069,7 +9135,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(715),
+ /* parameters */ ParameterIndex(723),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9080,7 +9146,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(717),
+ /* parameters */ ParameterIndex(725),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9091,7 +9157,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(719),
+ /* parameters */ ParameterIndex(727),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9102,7 +9168,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(721),
+ /* parameters */ ParameterIndex(729),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9113,7 +9179,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 6,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(723),
+ /* parameters */ ParameterIndex(731),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9124,7 +9190,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(21),
- /* parameters */ ParameterIndex(725),
+ /* parameters */ ParameterIndex(733),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9135,7 +9201,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(21),
- /* parameters */ ParameterIndex(727),
+ /* parameters */ ParameterIndex(735),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9146,7 +9212,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(21),
- /* parameters */ ParameterIndex(729),
+ /* parameters */ ParameterIndex(737),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9157,7 +9223,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 5,
/* templates */ TemplateIndex(21),
- /* parameters */ ParameterIndex(731),
+ /* parameters */ ParameterIndex(739),
/* return_matcher_indices */ MatcherIndicesIndex(659),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9167,9 +9233,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(68),
+ /* templates */ TemplateIndex(75),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9178,9 +9244,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(79),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9189,9 +9255,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(76),
+ /* templates */ TemplateIndex(83),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9200,9 +9266,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(80),
+ /* templates */ TemplateIndex(87),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9211,9 +9277,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(84),
+ /* templates */ TemplateIndex(91),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9222,9 +9288,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 4,
- /* templates */ TemplateIndex(88),
+ /* templates */ TemplateIndex(95),
/* parameters */ ParameterIndex(6),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9233,9 +9299,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(134),
+ /* templates */ TemplateIndex(137),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9244,9 +9310,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(137),
+ /* templates */ TemplateIndex(140),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9255,9 +9321,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(140),
+ /* templates */ TemplateIndex(143),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9266,9 +9332,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(143),
+ /* templates */ TemplateIndex(146),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(964),
+ /* return_matcher_indices */ MatcherIndicesIndex(972),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9277,7 +9343,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(49),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(267),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9288,7 +9354,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(252),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9321,7 +9387,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(257),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9332,7 +9398,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(262),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9376,7 +9442,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(49),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(267),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9387,7 +9453,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(59),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9420,7 +9486,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(65),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9431,7 +9497,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(71),
/* return_matcher_indices */ MatcherIndicesIndex(2),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9477,7 +9543,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(77),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9488,7 +9554,7 @@
/* num_templates */ 4,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(77),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9499,7 +9565,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(82),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9510,7 +9576,7 @@
/* num_templates */ 4,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(82),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9521,7 +9587,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(320),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9532,7 +9598,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(324),
- /* return_matcher_indices */ MatcherIndicesIndex(954),
+ /* return_matcher_indices */ MatcherIndicesIndex(962),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9541,8 +9607,8 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(51),
- /* parameters */ ParameterIndex(685),
+ /* templates */ TemplateIndex(58),
+ /* parameters */ ParameterIndex(693),
/* return_matcher_indices */ MatcherIndicesIndex(43),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9552,9 +9618,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(688),
- /* return_matcher_indices */ MatcherIndicesIndex(909),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(696),
+ /* return_matcher_indices */ MatcherIndicesIndex(917),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9563,9 +9629,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(692),
- /* return_matcher_indices */ MatcherIndicesIndex(909),
+ /* templates */ TemplateIndex(57),
+ /* parameters */ ParameterIndex(700),
+ /* return_matcher_indices */ MatcherIndicesIndex(917),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9575,8 +9641,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(767),
- /* return_matcher_indices */ MatcherIndicesIndex(966),
+ /* parameters */ ParameterIndex(775),
+ /* return_matcher_indices */ MatcherIndicesIndex(974),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9586,8 +9652,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(768),
- /* return_matcher_indices */ MatcherIndicesIndex(968),
+ /* parameters */ ParameterIndex(776),
+ /* return_matcher_indices */ MatcherIndicesIndex(976),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9597,651 +9663,13 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(769),
- /* return_matcher_indices */ MatcherIndicesIndex(970),
+ /* parameters */ ParameterIndex(777),
+ /* return_matcher_indices */ MatcherIndicesIndex(978),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
/* [221] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 5,
- /* num_explicit_templates */ 0,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(34),
- /* parameters */ ParameterIndex(297),
- /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [222] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 5,
- /* num_explicit_templates */ 0,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(42),
- /* parameters */ ParameterIndex(302),
- /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [223] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 5,
- /* num_explicit_templates */ 0,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(108),
- /* parameters */ ParameterIndex(307),
- /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [224] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(0),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [225] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(616),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [226] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(312),
- /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [227] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(316),
- /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [228] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(312),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [229] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(316),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [230] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 6,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(0),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [231] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 6,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(8),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [232] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(4),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [233] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(30),
- /* parameters */ ParameterIndex(689),
- /* return_matcher_indices */ MatcherIndicesIndex(909),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [234] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(26),
- /* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [235] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(149),
- /* parameters */ ParameterIndex(742),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [236] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(26),
- /* parameters */ ParameterIndex(14),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [237] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 1,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(96),
- /* parameters */ ParameterIndex(743),
- /* return_matcher_indices */ MatcherIndicesIndex(927),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [238] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 1,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(26),
- /* parameters */ ParameterIndex(14),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [239] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 1,
- /* num_templates */ 5,
- /* templates */ TemplateIndex(26),
- /* parameters */ ParameterIndex(695),
- /* return_matcher_indices */ MatcherIndicesIndex(936),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [240] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(4),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [241] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(698),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [242] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(4),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [243] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(698),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [244] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(4),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [245] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(701),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [246] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(31),
- /* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [247] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(30),
- /* parameters */ ParameterIndex(690),
- /* return_matcher_indices */ MatcherIndicesIndex(909),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [248] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(169),
- /* parameters */ ParameterIndex(745),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [249] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(152),
- /* parameters */ ParameterIndex(747),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [250] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(155),
- /* parameters */ ParameterIndex(749),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [251] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(100),
- /* parameters */ ParameterIndex(751),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [252] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(27),
- /* parameters */ ParameterIndex(600),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [253] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 4,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(150),
- /* parameters */ ParameterIndex(604),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [254] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(27),
- /* parameters */ ParameterIndex(705),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [255] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(150),
- /* parameters */ ParameterIndex(708),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [256] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(104),
- /* parameters */ ParameterIndex(14),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [257] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 1,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(104),
- /* parameters */ ParameterIndex(743),
- /* return_matcher_indices */ MatcherIndicesIndex(927),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [258] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(105),
- /* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(858),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [259] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(105),
- /* parameters */ ParameterIndex(741),
- /* return_matcher_indices */ MatcherIndicesIndex(951),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [260] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(158),
- /* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [261] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(158),
- /* parameters */ ParameterIndex(742),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [262] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(161),
- /* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [263] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(161),
- /* parameters */ ParameterIndex(742),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [264] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(104),
- /* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [265] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(164),
- /* parameters */ ParameterIndex(742),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [266] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(167),
- /* parameters */ ParameterIndex(711),
- /* return_matcher_indices */ MatcherIndicesIndex(533),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [267] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(112),
- /* parameters */ ParameterIndex(8),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [268] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(30),
- /* parameters */ ParameterIndex(689),
- /* return_matcher_indices */ MatcherIndicesIndex(8),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [269] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 7,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(765),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [270] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 1,
- /* num_explicit_templates */ 1,
- /* num_templates */ 7,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(766),
- /* return_matcher_indices */ MatcherIndicesIndex(43),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [271] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 4,
- /* templates */ TemplateIndex(92),
- /* parameters */ ParameterIndex(735),
- /* return_matcher_indices */ MatcherIndicesIndex(869),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [272] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(737),
- /* return_matcher_indices */ MatcherIndicesIndex(881),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [273] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(739),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [274] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(703),
- /* return_matcher_indices */ MatcherIndicesIndex(921),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [275] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(699),
- /* return_matcher_indices */ MatcherIndicesIndex(817),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [276] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 2,
- /* num_explicit_templates */ 0,
- /* num_templates */ 3,
- /* templates */ TemplateIndex(146),
- /* parameters */ ParameterIndex(740),
- /* return_matcher_indices */ MatcherIndicesIndex(877),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [277] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 0,
- /* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(299),
- /* return_matcher_indices */ MatcherIndicesIndex(524),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [278] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* num_parameters */ 3,
- /* num_explicit_templates */ 0,
- /* num_templates */ 0,
- /* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(299),
- /* return_matcher_indices */ MatcherIndicesIndex(533),
- /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
- },
- {
- /* [279] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 5,
@@ -10251,13 +9679,673 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
+ /* [222] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 5,
+ /* templates */ TemplateIndex(38),
+ /* parameters */ ParameterIndex(612),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [223] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 5,
+ /* templates */ TemplateIndex(43),
+ /* parameters */ ParameterIndex(616),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [224] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 5,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(34),
+ /* parameters */ ParameterIndex(297),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [225] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 5,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(39),
+ /* parameters */ ParameterIndex(302),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [226] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 5,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(44),
+ /* parameters */ ParameterIndex(307),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [227] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(0),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [228] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(624),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [229] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(312),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [230] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(316),
+ /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [231] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(312),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [232] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(316),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [233] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 6,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(0),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [234] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 6,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(8),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [235] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(31),
+ /* parameters */ ParameterIndex(4),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [236] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(697),
+ /* return_matcher_indices */ MatcherIndicesIndex(917),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [237] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(1),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [238] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(152),
+ /* parameters */ ParameterIndex(750),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [239] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(14),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [240] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(103),
+ /* parameters */ ParameterIndex(751),
+ /* return_matcher_indices */ MatcherIndicesIndex(935),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [241] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(14),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [242] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 5,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(703),
+ /* return_matcher_indices */ MatcherIndicesIndex(944),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [243] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(31),
+ /* parameters */ ParameterIndex(4),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [244] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(706),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [245] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(31),
+ /* parameters */ ParameterIndex(4),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [246] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(706),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [247] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(31),
+ /* parameters */ ParameterIndex(4),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [248] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(709),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [249] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(31),
+ /* parameters */ ParameterIndex(13),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [250] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(698),
+ /* return_matcher_indices */ MatcherIndicesIndex(917),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [251] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(172),
+ /* parameters */ ParameterIndex(753),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [252] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(155),
+ /* parameters */ ParameterIndex(755),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [253] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(158),
+ /* parameters */ ParameterIndex(757),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [254] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(107),
+ /* parameters */ ParameterIndex(759),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [255] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(27),
+ /* parameters */ ParameterIndex(600),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [256] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 4,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(153),
+ /* parameters */ ParameterIndex(604),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [257] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(27),
+ /* parameters */ ParameterIndex(713),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [258] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(153),
+ /* parameters */ ParameterIndex(716),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [259] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(111),
+ /* parameters */ ParameterIndex(14),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [260] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(111),
+ /* parameters */ ParameterIndex(751),
+ /* return_matcher_indices */ MatcherIndicesIndex(935),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [261] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(112),
+ /* parameters */ ParameterIndex(13),
+ /* return_matcher_indices */ MatcherIndicesIndex(858),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [262] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(112),
+ /* parameters */ ParameterIndex(749),
+ /* return_matcher_indices */ MatcherIndicesIndex(959),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [263] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(161),
+ /* parameters */ ParameterIndex(1),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [264] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(161),
+ /* parameters */ ParameterIndex(750),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [265] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(164),
+ /* parameters */ ParameterIndex(1),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [266] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(164),
+ /* parameters */ ParameterIndex(750),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [267] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(111),
+ /* parameters */ ParameterIndex(1),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [268] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(167),
+ /* parameters */ ParameterIndex(750),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [269] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(170),
+ /* parameters */ ParameterIndex(719),
+ /* return_matcher_indices */ MatcherIndicesIndex(533),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [270] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(115),
+ /* parameters */ ParameterIndex(8),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [271] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(697),
+ /* return_matcher_indices */ MatcherIndicesIndex(8),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [272] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 7,
+ /* templates */ TemplateIndex(3),
+ /* parameters */ ParameterIndex(773),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [273] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 1,
+ /* num_explicit_templates */ 1,
+ /* num_templates */ 7,
+ /* templates */ TemplateIndex(3),
+ /* parameters */ ParameterIndex(774),
+ /* return_matcher_indices */ MatcherIndicesIndex(43),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [274] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(743),
+ /* return_matcher_indices */ MatcherIndicesIndex(869),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [275] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(745),
+ /* return_matcher_indices */ MatcherIndicesIndex(881),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [276] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(747),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [277] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(711),
+ /* return_matcher_indices */ MatcherIndicesIndex(929),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [278] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(707),
+ /* return_matcher_indices */ MatcherIndicesIndex(817),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [279] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(149),
+ /* parameters */ ParameterIndex(748),
+ /* return_matcher_indices */ MatcherIndicesIndex(877),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
/* [280] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 0,
+ /* templates */ TemplateIndex(/* invalid */),
+ /* parameters */ ParameterIndex(299),
+ /* return_matcher_indices */ MatcherIndicesIndex(524),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [281] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 3,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 0,
+ /* templates */ TemplateIndex(/* invalid */),
+ /* parameters */ ParameterIndex(299),
+ /* return_matcher_indices */ MatcherIndicesIndex(533),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [282] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 5,
- /* templates */ TemplateIndex(38),
- /* parameters */ ParameterIndex(612),
+ /* templates */ TemplateIndex(48),
+ /* parameters */ ParameterIndex(620),
/* return_matcher_indices */ MatcherIndicesIndex(842),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -10271,116 +10359,116 @@
/* [0] */
/* fn array_length[I : u32, A : access](ptr<storage, struct_with_runtime_array, A>, I) -> u32 */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(266),
+ /* overloads */ OverloadIndex(269),
},
{
/* [1] */
/* fn atomic_load[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U) -> T */
/* fn atomic_load[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, readable>, U, U) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(224),
+ /* overloads */ OverloadIndex(227),
},
{
/* [2] */
/* fn atomic_store[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) */
/* fn atomic_store[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(226),
+ /* overloads */ OverloadIndex(229),
},
{
/* [3] */
/* fn atomic_exchange[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_exchange[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [4] */
/* fn atomic_compare_exchange[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, U, T, T) -> T */
/* fn atomic_compare_exchange[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, U, T, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(230),
+ /* overloads */ OverloadIndex(233),
},
{
/* [5] */
/* fn atomic_i_add[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_i_add[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [6] */
/* fn atomic_i_sub[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_i_sub[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [7] */
/* fn atomic_s_max[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_s_max[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [8] */
/* fn atomic_s_min[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_s_min[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [9] */
/* fn atomic_u_max[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_u_max[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [10] */
/* fn atomic_u_min[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_u_min[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [11] */
/* fn atomic_and[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_and[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [12] */
/* fn atomic_or[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_or[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [13] */
/* fn atomic_xor[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, U, U, T) -> T */
/* fn atomic_xor[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U, T) -> T */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(228),
+ /* overloads */ OverloadIndex(231),
},
{
/* [14] */
/* fn atomic_i_increment[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(267),
+ /* overloads */ OverloadIndex(270),
},
{
/* [15] */
/* fn atomic_i_decrement[T : iu32, U : u32, S : workgroup_or_storage](ptr<S, T, writable>, U, U) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(267),
+ /* overloads */ OverloadIndex(270),
},
{
/* [16] */
/* fn dot[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(268),
+ /* overloads */ OverloadIndex(271),
},
{
/* [17] */
@@ -10467,13 +10555,13 @@
/* [22] */
/* fn image_query_levels<Z : iu32>[T : fiu32, D : depth, R : arrayed, S : sampled, F : texel_format, A : access](image: image<T, dim_1d_2d_3d_or_cube, D, R, single_sampled, S, F, A>) -> Z */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(269),
+ /* overloads */ OverloadIndex(272),
},
{
/* [23] */
/* fn image_query_samples<Z : iu32>[T : fiu32, D : depth, R : arrayed, S : sampled, F : texel_format, A : access](image: image<T, dim_2d, D, R, multi_sampled, S, F, A>) -> Z */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(270),
+ /* overloads */ OverloadIndex(273),
},
{
/* [24] */
@@ -10683,19 +10771,19 @@
/* [33] */
/* fn matrix_times_matrix[T : f32_f16, K : num, C : num, R : num](mat<K, R, T>, mat<C, K, T>) -> mat<C, R, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(271),
+ /* overloads */ OverloadIndex(274),
},
{
/* [34] */
/* fn matrix_times_scalar[T : f32_f16, N : num, M : num](mat<N, M, T>, T) -> mat<N, M, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(272),
+ /* overloads */ OverloadIndex(275),
},
{
/* [35] */
/* fn matrix_times_vector[T : f32_f16, N : num, M : num](mat<N, M, T>, vec<N, T>) -> vec<M, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(273),
+ /* overloads */ OverloadIndex(276),
},
{
/* [36] */
@@ -10709,20 +10797,20 @@
/* [37] */
/* fn vector_times_matrix[T : f32_f16, N : num, M : num](vec<N, T>, mat<M, N, T>) -> vec<M, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(274),
+ /* overloads */ OverloadIndex(277),
},
{
/* [38] */
/* fn vector_times_scalar[T : f32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(275),
+ /* overloads */ OverloadIndex(278),
},
{
/* [39] */
/* fn normalize[T : f32_f16](T) -> T */
/* fn normalize[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(232),
+ /* overloads */ OverloadIndex(235),
},
{
/* [40] */
@@ -10737,360 +10825,362 @@
/* fn sign<R : iu32>[T : iu32](T) -> R */
/* fn sign<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [42] */
/* fn abs<R : iu32>[T : iu32](T) -> R */
/* fn abs<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [43] */
/* fn s_max<R : iu32>[T : iu32, U : iu32](T, U) -> R */
/* fn s_max<R : iu32>[T : iu32, U : iu32, N : num](vec<N, T>, vec<N, U>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(236),
+ /* overloads */ OverloadIndex(239),
},
{
/* [44] */
/* fn s_min<R : iu32>[T : iu32, U : iu32](T, U) -> R */
/* fn s_min<R : iu32>[T : iu32, U : iu32, N : num](vec<N, T>, vec<N, U>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(236),
+ /* overloads */ OverloadIndex(239),
},
{
/* [45] */
/* fn s_clamp<R : iu32>[T : iu32, U : iu32, V : iu32](T, U, V) -> R */
/* fn s_clamp<R : iu32>[T : iu32, U : iu32, V : iu32, N : num](vec<N, T>, vec<N, U>, vec<N, V>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(238),
+ /* overloads */ OverloadIndex(241),
},
{
/* [46] */
/* fn u_max<R : iu32>[T : iu32, U : iu32](T, U) -> R */
/* fn u_max<R : iu32>[T : iu32, U : iu32, N : num](vec<N, T>, vec<N, U>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(236),
+ /* overloads */ OverloadIndex(239),
},
{
/* [47] */
/* fn u_min<R : iu32>[T : iu32, U : iu32](T, U) -> R */
/* fn u_min<R : iu32>[T : iu32, U : iu32, N : num](vec<N, T>, vec<N, U>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(236),
+ /* overloads */ OverloadIndex(239),
},
{
/* [48] */
/* fn u_clamp<R : iu32>[T : iu32, U : iu32, V : iu32](T, U, V) -> R */
/* fn u_clamp<R : iu32>[T : iu32, U : iu32, V : iu32, N : num](vec<N, T>, vec<N, U>, vec<N, V>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(238),
+ /* overloads */ OverloadIndex(241),
},
{
/* [49] */
/* fn find_i_lsb<R : iu32>[T : iu32](T) -> R */
/* fn find_i_lsb<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [50] */
/* fn find_s_msb<R : iu32>[T : iu32](T) -> R */
/* fn find_s_msb<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [51] */
/* fn find_u_msb<R : iu32>[T : iu32](T) -> R */
/* fn find_u_msb<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [52] */
/* fn refract[T : f32_f16](T, T, T) -> T */
/* fn refract[T : f32_f16, N : num](vec<N, T>, vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(240),
+ /* overloads */ OverloadIndex(243),
},
{
/* [53] */
/* fn reflect[T : f32_f16](T, T) -> T */
/* fn reflect[T : f32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(242),
+ /* overloads */ OverloadIndex(245),
},
{
/* [54] */
/* fn face_forward[T : f32_f16](T, T, T) -> T */
/* fn face_forward[T : f32_f16, N : num](vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(244),
+ /* overloads */ OverloadIndex(247),
},
{
/* [55] */
/* fn ldexp[T : f32_f16, U : iu32](T, U) -> T */
/* fn ldexp[N : num, T : f32_f16, U : iu32](vec<N, T>, vec<N, U>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(246),
+ /* overloads */ OverloadIndex(249),
},
{
/* [56] */
/* fn modf[T : f32_f16, S : function_private_workgroup_storage](x: T, i: ptr<S, T, writable>) -> T */
/* fn modf[T : f32_f16, N : num, S : function_private_workgroup_storage](x: vec<N, T>, i: ptr<S, vec<N, T>, writable>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(248),
+ /* overloads */ OverloadIndex(251),
},
{
/* [57] */
/* fn frexp[T : f32_f16, R : iu32, S : function_private_workgroup_storage](x: T, i: ptr<S, R, writable>) -> T */
/* fn frexp[T : f32_f16, R : iu32, N : num, S : function_private_workgroup_storage](x: vec<N, T>, i: ptr<S, vec<N, R>, writable>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(250),
+ /* overloads */ OverloadIndex(253),
},
{
/* [58] */
/* fn bit_count<R : iu32>[T : iu32](T) -> R */
/* fn bit_count<R : iu32>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(234),
+ /* overloads */ OverloadIndex(237),
},
{
/* [59] */
/* fn bit_field_insert[T : iu32](base: T, insert: T, offset: iu32, count: iu32) -> T */
/* fn bit_field_insert[T : iu32, N : num](base: vec<N, T>, insert: vec<N, T>, offset: iu32, count: iu32) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(252),
+ /* overloads */ OverloadIndex(255),
},
{
/* [60] */
/* fn bit_field_s_extract[T : iu32](base: T, offset: iu32, count: iu32) -> T */
/* fn bit_field_s_extract[T : iu32, N : num](base: vec<N, T>, offset: iu32, count: iu32) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(254),
+ /* overloads */ OverloadIndex(257),
},
{
/* [61] */
/* fn bit_field_u_extract[T : iu32](base: T, offset: iu32, count: iu32) -> T */
/* fn bit_field_u_extract[T : iu32, N : num](base: vec<N, T>, offset: iu32, count: iu32) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(254),
+ /* overloads */ OverloadIndex(257),
},
{
/* [62] */
/* fn add<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn add<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [63] */
/* fn sub<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn sub<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [64] */
/* fn mul<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn mul<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [65] */
/* fn s_div<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn s_div<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [66] */
/* fn s_mod<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn s_mod<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [67] */
/* fn s_greater_than[A : iu32, B : iu32](A, B) -> bool */
/* fn s_greater_than[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [68] */
/* fn s_greater_than_equal[A : iu32, B : iu32](A, B) -> bool */
/* fn s_greater_than_equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [69] */
/* fn s_less_than[A : iu32, B : iu32](A, B) -> bool */
/* fn s_less_than[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [70] */
/* fn s_less_than_equal[A : iu32, B : iu32](A, B) -> bool */
/* fn s_less_than_equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [71] */
/* fn u_greater_than[A : iu32, B : iu32](A, B) -> bool */
/* fn u_greater_than[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [72] */
/* fn u_greater_than_equal[A : iu32, B : iu32](A, B) -> bool */
/* fn u_greater_than_equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [73] */
/* fn u_less_than[A : iu32, B : iu32](A, B) -> bool */
/* fn u_less_than[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [74] */
/* fn u_less_than_equal[A : iu32, B : iu32](A, B) -> bool */
/* fn u_less_than_equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [75] */
/* fn convert_f_to_s<R : iu32>[T : f32_f16](T) -> R */
/* fn convert_f_to_s<R : iu32>[T : f32_f16, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(260),
+ /* overloads */ OverloadIndex(263),
},
{
/* [76] */
/* fn convert_s_to_f<R : f32_f16>[T : iu32](T) -> R */
/* fn convert_s_to_f<R : f32_f16>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(262),
+ /* overloads */ OverloadIndex(265),
},
{
/* [77] */
/* fn convert_u_to_f<R : f32_f16>[T : iu32](T) -> R */
/* fn convert_u_to_f<R : f32_f16>[T : iu32, N : num](vec<N, T>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(262),
+ /* overloads */ OverloadIndex(265),
},
{
/* [78] */
/* fn bitwise_and<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn bitwise_and<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [79] */
/* fn bitwise_or<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn bitwise_or<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [80] */
/* fn bitwise_xor<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn bitwise_xor<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [81] */
/* fn equal[A : iu32, B : iu32](A, B) -> bool */
/* fn equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [82] */
/* fn not_equal[A : iu32, B : iu32](A, B) -> bool */
/* fn not_equal[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(258),
+ /* overloads */ OverloadIndex(261),
},
{
/* [83] */
/* fn shift_left_logical<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn shift_left_logical<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [84] */
/* fn shift_right_logical<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn shift_right_logical<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [85] */
/* fn shift_right_arithmetic<R : iu32>[A : iu32, B : iu32](A, B) -> R */
/* fn shift_right_arithmetic<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(256),
+ /* overloads */ OverloadIndex(259),
},
{
/* [86] */
/* fn not<R : iu32>[A : iu32](A) -> R */
/* fn not<R : iu32>[A : iu32, N : num](vec<N, A>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(264),
+ /* overloads */ OverloadIndex(267),
},
{
/* [87] */
/* fn s_negate<R : iu32>[A : iu32](A) -> R */
/* fn s_negate<R : iu32>[A : iu32, N : num](vec<N, A>) -> vec<N, R> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(264),
+ /* overloads */ OverloadIndex(267),
},
{
/* [88] */
/* fn f_mod[T : f32_f16](T, T) -> T */
/* fn f_mod[T : f32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(242),
+ /* overloads */ OverloadIndex(245),
},
{
/* [89] */
/* fn outer_product[T : f32_f16, N : num, M : num](vec<N, T>, vec<M, T>) -> mat<M, N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(276),
+ /* overloads */ OverloadIndex(279),
},
{
/* [90] */
/* fn s_dot(u32, u32, u32) -> i32 */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(277),
+ /* overloads */ OverloadIndex(280),
},
{
/* [91] */
/* fn u_dot(u32, u32, u32) -> u32 */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(278),
+ /* overloads */ OverloadIndex(281),
},
{
/* [92] */
/* fn cooperative_matrix_load<T : subgroup_matrix<K, S, C, R>>[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num](ptr<workgroup_or_storage, S, readable>, u32, u32, u32) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(279),
+ /* fn cooperative_matrix_load<T : subgroup_matrix<K, S, C, R>>[K : subgroup_matrix_kind, S : i8, C : num, R : num](ptr<workgroup_or_storage, i32, readable>, u32, u32, u32) -> T */
+ /* fn cooperative_matrix_load<T : subgroup_matrix<K, S, C, R>>[K : subgroup_matrix_kind, S : u8, C : num, R : num](ptr<workgroup_or_storage, u32, readable>, u32, u32, u32) -> T */
+ /* num overloads */ 3,
+ /* overloads */ OverloadIndex(221),
},
{
/* [93] */
@@ -11098,13 +11188,13 @@
/* fn cooperative_matrix_store[K : subgroup_matrix_kind, S : i8, C : num, R : num](ptr<workgroup_or_storage, i32, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32) */
/* fn cooperative_matrix_store[K : subgroup_matrix_kind, S : u8, C : num, R : num](ptr<workgroup_or_storage, u32, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32) */
/* num overloads */ 3,
- /* overloads */ OverloadIndex(221),
+ /* overloads */ OverloadIndex(224),
},
{
/* [94] */
/* fn cooperative_matrix_mul_add[T : subgroup_matrix_elements, TR : subgroup_matrix_elements, C : num, R : num, K : num](subgroup_matrix<subgroup_matrix_kind_left, T, K, R>, subgroup_matrix<subgroup_matrix_kind_right, T, C, K>, subgroup_matrix<subgroup_matrix_kind_result, TR, C, R>, u32) -> subgroup_matrix<subgroup_matrix_kind_result, TR, C, R> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(280),
+ /* overloads */ OverloadIndex(282),
},
};
diff --git a/src/tint/lang/spirv/spirv.def b/src/tint/lang/spirv/spirv.def
index 2b242aa..07cbec5 100644
--- a/src/tint/lang/spirv/spirv.def
+++ b/src/tint/lang/spirv/spirv.def
@@ -1667,6 +1667,12 @@
@stage("compute") implicit(K: subgroup_matrix_kind, S: fiu32_f16, C: num, R: num)
fn cooperative_matrix_load<T: subgroup_matrix<K, S, C, R> >(
ptr<workgroup_or_storage, S, readable>, u32, u32, u32) -> T
+@stage("compute") implicit(K: subgroup_matrix_kind, S: i8, C: num, R: num)
+ fn cooperative_matrix_load<T: subgroup_matrix<K, S, C, R> >(
+ ptr<workgroup_or_storage, i32, readable>, u32, u32, u32) -> T
+@stage("compute") implicit(K: subgroup_matrix_kind, S: u8, C: num, R: num)
+ fn cooperative_matrix_load<T: subgroup_matrix<K, S, C, R> >(
+ ptr<workgroup_or_storage, u32, readable>, u32, u32, u32) -> T
@stage("compute") implicit(K: subgroup_matrix_kind, S: fiu32_f16, C: num, R: num) fn cooperative_matrix_store(
ptr<workgroup_or_storage, S, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32)
@stage("compute") implicit(K: subgroup_matrix_kind, S: i8, C: num, R: num) fn cooperative_matrix_store(
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
index 040f681..07fd998 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
@@ -3985,6 +3985,80 @@
EXPECT_EQ(expect, str());
}
+TEST_F(SpirvWriter_BuiltinPolyfillTest, SubgroupMatrixLoad_Storage_ColMajor_I8) {
+ auto* mat = ty.subgroup_matrix_result(ty.i8(), 8, 8);
+ auto* p = b.FunctionParam<ptr<storage, array<i32, 256>>>("p");
+ auto* func = b.Function("foo", mat);
+ func->SetParams({p});
+ b.Append(func->Block(), [&] {
+ auto* call = b.CallExplicit(mat, core::BuiltinFn::kSubgroupMatrixLoad, Vector{mat}, p, 64_u,
+ true, 32_u);
+ b.Return(func, call);
+ });
+
+ auto* src = R"(
+%foo = func(%p:ptr<storage, array<i32, 256>, read_write>):subgroup_matrix_result<i8, 8, 8> {
+ $B1: {
+ %3:subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>> %p, 64u, true, 32u
+ ret %3
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%p:ptr<storage, array<i32, 256>, read_write>):subgroup_matrix_result<i8, 8, 8> {
+ $B1: {
+ %3:ptr<storage, i32, read_write> = access %p, 64u
+ %4:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %3, 1u, 32u, 32u
+ ret %4
+ }
+}
+)";
+
+ PolyfillConfig config{.use_vulkan_memory_model = true};
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(SpirvWriter_BuiltinPolyfillTest, SubgroupMatrixLoad_Workgroup_RowMajor_U8) {
+ auto* mat = ty.subgroup_matrix_result(ty.u8(), 8, 8);
+ auto* p = b.FunctionParam<ptr<workgroup, array<u32, 256>>>("p");
+ auto* func = b.Function("foo", mat);
+ func->SetParams({p});
+ b.Append(func->Block(), [&] {
+ auto* call = b.CallExplicit(mat, core::BuiltinFn::kSubgroupMatrixLoad, Vector{mat}, p, 64_u,
+ false, 32_u);
+ b.Return(func, call);
+ });
+
+ auto* src = R"(
+%foo = func(%p:ptr<workgroup, array<u32, 256>, read_write>):subgroup_matrix_result<u8, 8, 8> {
+ $B1: {
+ %3:subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>> %p, 64u, false, 32u
+ ret %3
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%p:ptr<workgroup, array<u32, 256>, read_write>):subgroup_matrix_result<u8, 8, 8> {
+ $B1: {
+ %3:ptr<workgroup, u32, read_write> = access %p, 64u
+ %4:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %3, 0u, 32u, 32u
+ ret %4
+ }
+}
+)";
+
+ PolyfillConfig config{.use_vulkan_memory_model = true};
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
TEST_F(SpirvWriter_BuiltinPolyfillTest, SubgroupMatrixStore_Storage_ColMajor_F32) {
auto* p = b.FunctionParam<ptr<storage, array<f32, 256>>>("p");
auto* m = b.FunctionParam("m", ty.subgroup_matrix_result(ty.f32(), 8, 8));
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
index eb02619..4058ab9 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
@@ -1,100 +1,98 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_03a4db() -> subgroup_matrix_result<i8, 8, 8> {
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_03a4db(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_03a4db = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read> = access %4, 1u
- %13:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_result<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_03a4db
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 56
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_03a4db "subgroupMatrixLoad_03a4db"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %35 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %47 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_03a4db = OpFunction %13 None %18
+ %19 = OpLabel
+ %33 = OpVariable %_ptr_Function_13 Function %35
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %23 = OpArrayLength %uint %sb_ro 0
+ %24 = OpIMul %uint %23 %uint_4
+ %26 = OpIMul %uint %uint_8 %uint_7
+ %28 = OpIAdd %uint %uint_1 %26
+ %30 = OpIAdd %uint %28 %uint_8
+ %31 = OpULessThanEqual %bool %30 %24
+ OpSelectionMerge %37 None
+ OpBranchConditional %31 %38 %37
+ %38 = OpLabel
+ %42 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %44 = OpCooperativeMatrixLoadKHR %13 %42 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %33 %44 None
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpLoad %13 %33 None
+ OpStore %res %39
+ %41 = OpLoad %13 %res None
+ OpReturnValue %41
+ OpFunctionEnd
+%compute_main = OpFunction %void None %47
+ %48 = OpLabel
+ %49 = OpFunctionCall %13 %subgroupMatrixLoad_03a4db
+ %50 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %52 = OpAccessChain %_ptr_StorageBuffer_int_0 %50 %uint_0
+ OpCooperativeMatrixStoreKHR %52 %49 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
index a687835..5459194 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
@@ -1,100 +1,95 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_0f7739() -> subgroup_matrix_left<i8, 8, 8> {
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_0f7739(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_0f7739 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read_write> = access %4, 1u
- %13:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_left<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_0f7739
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_0f7739 "subgroupMatrixLoad_0f7739"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %34 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_0f7739 = OpFunction %13 None %18
+ %19 = OpLabel
+ %32 = OpVariable %_ptr_Function_13 Function %34
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %22 = OpArrayLength %uint %sb_rw 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %29 = OpIAdd %uint %27 %uint_8
+ %30 = OpULessThanEqual %bool %29 %23
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %13 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %13 %32 None
+ OpStore %res %38
+ %40 = OpLoad %13 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %13 %subgroupMatrixLoad_0f7739
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_int %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/122298.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/122298.wgsl.expected.spvasm
index 2700871..8a3b081 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/122298.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/122298.wgsl.expected.spvasm
@@ -1,90 +1,76 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_122298() -> subgroup_matrix_left<i8, 8, 8> {
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_122298(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_122298 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, i32, read_write> = access %4, 1u
- %6:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_122298
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 38
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_122298 "subgroupMatrixLoad_122298"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_122298 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %13 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %13 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %13 %subgroupMatrixLoad_122298
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %35 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+ OpCooperativeMatrixStoreKHR %35 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/1b3162.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/1b3162.wgsl.expected.spvasm
index e3b43c6..1ca4c3e 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/1b3162.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/1b3162.wgsl.expected.spvasm
@@ -1,98 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-var<workgroup> arg_0 : array<i32, 1024>;
-
-fn subgroupMatrixLoad_1b3162() -> subgroup_matrix_right<i8, 8, 8> {
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_1b3162(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<workgroup, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<i32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_1b3162 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, i32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, i32, read_write> = access %arg_0, %idx
- store %12, 0i
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_1b3162
- %16:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, i32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_1b3162 "subgroupMatrixLoad_1b3162"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_int_uint_1024_0 = OpTypeArray %int %uint_1024
+%_ptr_Workgroup__arr_int_uint_1024_0 = OpTypePointer Workgroup %_arr_int_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %14 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %19 = OpTypeFunction %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+%_ptr_Function_14 = OpTypePointer Function %14
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void %uint
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %57 = OpTypeFunction %void
+%subgroupMatrixLoad_1b3162 = OpFunction %14 None %19
+ %20 = OpLabel
+ %res = OpVariable %_ptr_Function_14 Function
+ %21 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ %23 = OpCooperativeMatrixLoadKHR %14 %21 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %23
+ %26 = OpLoad %14 %res None
+ OpReturnValue %26
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %30
+%tint_local_index = OpFunctionParameter %uint
+ %31 = OpLabel
+ OpBranch %32
+ %32 = OpLabel
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpPhi %uint %tint_local_index %32 %38 %34
+ OpLoopMerge %36 %34 None
+ OpBranch %33
+ %33 = OpLabel
+ %50 = OpUGreaterThanEqual %bool %37 %uint_1024
+ OpSelectionMerge %52 None
+ OpBranchConditional %50 %53 %52
+ %53 = OpLabel
+ OpBranch %36
+ %52 = OpLabel
+ %54 = OpAccessChain %_ptr_Workgroup_int %arg_0 %37
+ OpStore %54 %int_0 NonPrivatePointer
+ OpBranch %34
+ %34 = OpLabel
+ %38 = OpIAdd %uint %37 %uint_1
+ OpBranch %35
+ %36 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %14 %subgroupMatrixLoad_1b3162
+ %43 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %43 %uint_0
+ OpCooperativeMatrixStoreKHR %46 %42 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %57
+ %58 = OpLabel
+ %59 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %60 = OpFunctionCall %void %compute_main_inner %59
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/297099.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/297099.wgsl.expected.spvasm
index 5198ebe..04253db 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/297099.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/297099.wgsl.expected.spvasm
@@ -1,90 +1,77 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_297099() -> subgroup_matrix_result<i8, 8, 8> {
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_297099(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_297099 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, i32, read_write> = access %4, 1u
- %6:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_297099
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 39
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_297099 "subgroupMatrixLoad_297099"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %32 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_297099 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %23 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %26 = OpCooperativeMatrixLoadKHR %13 %23 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %26
+ %29 = OpLoad %13 %res None
+ OpReturnValue %29
+ OpFunctionEnd
+%compute_main = OpFunction %void None %32
+ %33 = OpLabel
+ %34 = OpFunctionCall %13 %subgroupMatrixLoad_297099
+ %35 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %36 = OpAccessChain %_ptr_StorageBuffer_int %35 %uint_0
+ OpCooperativeMatrixStoreKHR %36 %34 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/29f533.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
index 8395f50..3a2bf16 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
@@ -1,100 +1,94 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_29f533() -> subgroup_matrix_left<u8, 8, 8> {
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_29f533(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_29f533 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read_write> = access %4, 1u
- %13:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_left<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_29f533
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 53
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_29f533 "subgroupMatrixLoad_29f533"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %33 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %45 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_29f533 = OpFunction %12 None %17
+ %18 = OpLabel
+ %31 = OpVariable %_ptr_Function_12 Function %33
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %21 = OpArrayLength %uint %sb_rw 0
+ %22 = OpIMul %uint %21 %uint_4
+ %24 = OpIMul %uint %uint_8 %uint_7
+ %26 = OpIAdd %uint %uint_1 %24
+ %28 = OpIAdd %uint %26 %uint_8
+ %29 = OpULessThanEqual %bool %28 %22
+ OpSelectionMerge %35 None
+ OpBranchConditional %29 %36 %35
+ %36 = OpLabel
+ %40 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %42 = OpCooperativeMatrixLoadKHR %12 %40 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %31 %42 None
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpLoad %12 %31 None
+ OpStore %res %37
+ %39 = OpLoad %12 %res None
+ OpReturnValue %39
+ OpFunctionEnd
+%compute_main = OpFunction %void None %45
+ %46 = OpLabel
+ %47 = OpFunctionCall %12 %subgroupMatrixLoad_29f533
+ %48 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %50 = OpAccessChain %_ptr_StorageBuffer_uint %48 %uint_0
+ OpCooperativeMatrixStoreKHR %50 %47 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
index 8cd8590..34b6148 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
@@ -1,90 +1,76 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_3f3203() -> subgroup_matrix_result<u8, 8, 8> {
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_3f3203(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_3f3203 = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, u32, read_write> = access %4, 1u
- %6:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_3f3203
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 38
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_3f3203 "subgroupMatrixLoad_3f3203"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_3f3203 = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %12 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %12 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %12 %subgroupMatrixLoad_3f3203
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %35 = OpAccessChain %_ptr_StorageBuffer_uint %34 %uint_0
+ OpCooperativeMatrixStoreKHR %35 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/487a88.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/487a88.wgsl.expected.spvasm
index 549d339..face314 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/487a88.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/487a88.wgsl.expected.spvasm
@@ -1,98 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-var<workgroup> arg_0 : array<u32, 1024>;
-
-fn subgroupMatrixLoad_487a88() -> subgroup_matrix_right<u8, 8, 8> {
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_487a88(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<workgroup, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<u32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_487a88 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, u32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, u32, read_write> = access %arg_0, %idx
- store %12, 0u
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_487a88
- %16:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, u32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_487a88 "subgroupMatrixLoad_487a88"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_uint_uint_1024_0 = OpTypeArray %uint %uint_1024
+%_ptr_Workgroup__arr_uint_uint_1024_0 = OpTypePointer Workgroup %_arr_uint_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %29 = OpTypeFunction %void %uint
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %55 = OpTypeFunction %void
+%subgroupMatrixLoad_487a88 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ %22 = OpCooperativeMatrixLoadKHR %13 %20 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %22
+ %25 = OpLoad %13 %res None
+ OpReturnValue %25
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %29
+%tint_local_index = OpFunctionParameter %uint
+ %30 = OpLabel
+ OpBranch %31
+ %31 = OpLabel
+ OpBranch %34
+ %34 = OpLabel
+ %36 = OpPhi %uint %tint_local_index %31 %37 %33
+ OpLoopMerge %35 %33 None
+ OpBranch %32
+ %32 = OpLabel
+ %49 = OpUGreaterThanEqual %bool %36 %uint_1024
+ OpSelectionMerge %51 None
+ OpBranchConditional %49 %52 %51
+ %52 = OpLabel
+ OpBranch %35
+ %51 = OpLabel
+ %53 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %36
+ OpStore %53 %uint_0 NonPrivatePointer
+ OpBranch %33
+ %33 = OpLabel
+ %37 = OpIAdd %uint %36 %uint_1
+ OpBranch %34
+ %35 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %13 %subgroupMatrixLoad_487a88
+ %42 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %42 %uint_0
+ OpCooperativeMatrixStoreKHR %45 %41 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %55
+ %56 = OpLabel
+ %57 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %58 = OpFunctionCall %void %compute_main_inner %57
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/50572b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/50572b.wgsl.expected.spvasm
index 05934ec..892930c 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/50572b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/50572b.wgsl.expected.spvasm
@@ -1,98 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-var<workgroup> arg_0 : array<u32, 1024>;
-
-fn subgroupMatrixLoad_50572b() -> subgroup_matrix_left<u8, 8, 8> {
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_50572b(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<workgroup, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<u32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_50572b = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, u32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, u32, read_write> = access %arg_0, %idx
- store %12, 0u
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_50572b
- %16:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, u32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_50572b "subgroupMatrixLoad_50572b"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_uint_uint_1024_0 = OpTypeArray %uint %uint_1024
+%_ptr_Workgroup__arr_uint_uint_1024_0 = OpTypePointer Workgroup %_arr_uint_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void %uint
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %55 = OpTypeFunction %void
+%subgroupMatrixLoad_50572b = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ %23 = OpCooperativeMatrixLoadKHR %13 %20 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %23
+ %26 = OpLoad %13 %res None
+ OpReturnValue %26
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %30
+%tint_local_index = OpFunctionParameter %uint
+ %31 = OpLabel
+ OpBranch %32
+ %32 = OpLabel
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpPhi %uint %tint_local_index %32 %38 %34
+ OpLoopMerge %36 %34 None
+ OpBranch %33
+ %33 = OpLabel
+ %49 = OpUGreaterThanEqual %bool %37 %uint_1024
+ OpSelectionMerge %51 None
+ OpBranchConditional %49 %52 %51
+ %52 = OpLabel
+ OpBranch %36
+ %51 = OpLabel
+ %53 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %37
+ OpStore %53 %uint_0 NonPrivatePointer
+ OpBranch %34
+ %34 = OpLabel
+ %38 = OpIAdd %uint %37 %uint_1
+ OpBranch %35
+ %36 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %13 %subgroupMatrixLoad_50572b
+ %43 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %43 %uint_0
+ OpCooperativeMatrixStoreKHR %45 %42 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %55
+ %56 = OpLabel
+ %57 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %58 = OpFunctionCall %void %compute_main_inner %57
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/567359.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/567359.wgsl.expected.spvasm
index 82a5a5a..5ba4188 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/567359.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/567359.wgsl.expected.spvasm
@@ -1,100 +1,96 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_567359() -> subgroup_matrix_right<u8, 8, 8> {
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_567359(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_567359 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read> = access %4, 1u
- %13:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_right<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_567359
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_567359 "subgroupMatrixLoad_567359"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %33 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %45 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_567359 = OpFunction %12 None %17
+ %18 = OpLabel
+ %31 = OpVariable %_ptr_Function_12 Function %33
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %22 = OpArrayLength %uint %sb_ro 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %28 = OpIAdd %uint %27 %uint_8
+ %29 = OpULessThanEqual %bool %28 %23
+ OpSelectionMerge %35 None
+ OpBranchConditional %29 %36 %35
+ %36 = OpLabel
+ %40 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %42 = OpCooperativeMatrixLoadKHR %12 %40 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %31 %42 None
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpLoad %12 %31 None
+ OpStore %res %37
+ %39 = OpLoad %12 %res None
+ OpReturnValue %39
+ OpFunctionEnd
+%compute_main = OpFunction %void None %45
+ %46 = OpLabel
+ %47 = OpFunctionCall %12 %subgroupMatrixLoad_567359
+ %48 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %50 = OpAccessChain %_ptr_StorageBuffer_uint_0 %48 %uint_0
+ OpCooperativeMatrixStoreKHR %50 %47 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
index f0457b6..2b2a231 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
@@ -1,100 +1,97 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_58b2f2() -> subgroup_matrix_right<i8, 8, 8> {
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_58b2f2(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_58b2f2 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read> = access %4, 1u
- %13:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_right<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_58b2f2
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_58b2f2 "subgroupMatrixLoad_58b2f2"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %34 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_58b2f2 = OpFunction %13 None %18
+ %19 = OpLabel
+ %32 = OpVariable %_ptr_Function_13 Function %34
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %23 = OpArrayLength %uint %sb_ro 0
+ %24 = OpIMul %uint %23 %uint_4
+ %26 = OpIMul %uint %uint_8 %uint_7
+ %28 = OpIAdd %uint %uint_1 %26
+ %29 = OpIAdd %uint %28 %uint_8
+ %30 = OpULessThanEqual %bool %29 %24
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %13 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %13 %32 None
+ OpStore %res %38
+ %40 = OpLoad %13 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %13 %subgroupMatrixLoad_58b2f2
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_int_0 %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
index dc054b2..eb31bf4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
@@ -1,100 +1,97 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_5e2602() -> subgroup_matrix_result<u8, 8, 8> {
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_5e2602(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_5e2602 = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read> = access %4, 1u
- %13:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_result<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_5e2602
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_5e2602 "subgroupMatrixLoad_5e2602"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %34 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_5e2602 = OpFunction %12 None %17
+ %18 = OpLabel
+ %32 = OpVariable %_ptr_Function_12 Function %34
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %22 = OpArrayLength %uint %sb_ro 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %29 = OpIAdd %uint %27 %uint_8
+ %30 = OpULessThanEqual %bool %29 %23
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %12 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %12 %32 None
+ OpStore %res %38
+ %40 = OpLoad %12 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %12 %subgroupMatrixLoad_5e2602
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_uint_0 %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/662272.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/662272.wgsl.expected.spvasm
index f8203a7..cfde270 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/662272.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/662272.wgsl.expected.spvasm
@@ -1,98 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-var<workgroup> arg_0 : array<i32, 1024>;
-
-fn subgroupMatrixLoad_662272() -> subgroup_matrix_result<i8, 8, 8> {
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_662272(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<workgroup, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<i32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_662272 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, i32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, i32, read_write> = access %arg_0, %idx
- store %12, 0i
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_662272
- %16:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, i32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_662272 "subgroupMatrixLoad_662272"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_int_uint_1024_0 = OpTypeArray %int %uint_1024
+%_ptr_Workgroup__arr_int_uint_1024_0 = OpTypePointer Workgroup %_arr_int_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %14 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %19 = OpTypeFunction %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_14 = OpTypePointer Function %14
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void %uint
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %57 = OpTypeFunction %void
+%subgroupMatrixLoad_662272 = OpFunction %14 None %19
+ %20 = OpLabel
+ %res = OpVariable %_ptr_Function_14 Function
+ %21 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %14 %21 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %14 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %50 = OpUGreaterThanEqual %bool %38 %uint_1024
+ OpSelectionMerge %52 None
+ OpBranchConditional %50 %53 %52
+ %53 = OpLabel
+ OpBranch %37
+ %52 = OpLabel
+ %54 = OpAccessChain %_ptr_Workgroup_int %arg_0 %38
+ OpStore %54 %int_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %42 = OpFunctionCall %14 %subgroupMatrixLoad_662272
+ %43 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %43 %uint_0
+ OpCooperativeMatrixStoreKHR %46 %42 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %57
+ %58 = OpLabel
+ %59 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %60 = OpFunctionCall %void %compute_main_inner %59
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
index 3ac3582..a31ed75 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
@@ -1,100 +1,95 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_664e6e() -> subgroup_matrix_right<i8, 8, 8> {
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_664e6e(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_664e6e = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read_write> = access %4, 1u
- %13:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_right<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_664e6e
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_664e6e "subgroupMatrixLoad_664e6e"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %34 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_664e6e = OpFunction %13 None %18
+ %19 = OpLabel
+ %32 = OpVariable %_ptr_Function_13 Function %34
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %23 = OpArrayLength %uint %sb_rw 0
+ %24 = OpIMul %uint %23 %uint_4
+ %26 = OpIMul %uint %uint_8 %uint_7
+ %28 = OpIAdd %uint %uint_1 %26
+ %29 = OpIAdd %uint %28 %uint_8
+ %30 = OpULessThanEqual %bool %29 %24
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %13 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %13 %32 None
+ OpStore %res %38
+ %40 = OpLoad %13 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %13 %subgroupMatrixLoad_664e6e
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_int %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
index 3ae4a3c..2e4a08a 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
@@ -1,90 +1,79 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_6778bb() -> subgroup_matrix_left<i8, 8, 8> {
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_6778bb(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_6778bb = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, i32, read> = access %4, 1u
- %6:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_6778bb
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 40
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_6778bb "subgroupMatrixLoad_6778bb"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_6778bb = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %13 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %13 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %13 %subgroupMatrixLoad_6778bb
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %36 = OpAccessChain %_ptr_StorageBuffer_int_0 %34 %uint_0
+ OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
index ea71039..abac4f9 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
@@ -1,90 +1,75 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_86df2e() -> subgroup_matrix_right<u8, 8, 8> {
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_86df2e(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_86df2e = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, u32, read_write> = access %4, 1u
- %6:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_86df2e
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 37
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_86df2e "subgroupMatrixLoad_86df2e"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_86df2e = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %12 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %12 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main = OpFunction %void None %30
+ %31 = OpLabel
+ %32 = OpFunctionCall %12 %subgroupMatrixLoad_86df2e
+ %33 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %34 = OpAccessChain %_ptr_StorageBuffer_uint %33 %uint_0
+ OpCooperativeMatrixStoreKHR %34 %32 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
index ebef1e8..b4e82df 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
@@ -1,90 +1,76 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_8861f0() -> subgroup_matrix_right<i8, 8, 8> {
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_8861f0(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_8861f0 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, i32, read_write> = access %4, 1u
- %6:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_8861f0
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 38
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_8861f0 "subgroupMatrixLoad_8861f0"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_8861f0 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %23 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %13 %23 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %13 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %13 %subgroupMatrixLoad_8861f0
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %35 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+ OpCooperativeMatrixStoreKHR %35 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
index ffdf136..4329164 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
@@ -1,100 +1,97 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_91abc9() -> subgroup_matrix_left<i8, 8, 8> {
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_91abc9(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_91abc9 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read> = access %4, 1u
- %13:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_left<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_91abc9
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_91abc9 "subgroupMatrixLoad_91abc9"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %34 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_91abc9 = OpFunction %13 None %18
+ %19 = OpLabel
+ %32 = OpVariable %_ptr_Function_13 Function %34
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %22 = OpArrayLength %uint %sb_ro 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %29 = OpIAdd %uint %27 %uint_8
+ %30 = OpULessThanEqual %bool %29 %23
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %13 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %13 %32 None
+ OpStore %res %38
+ %40 = OpLoad %13 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %13 %subgroupMatrixLoad_91abc9
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_int_0 %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
index 784d6ca..9a666e6 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
@@ -1,90 +1,80 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_9bc799() -> subgroup_matrix_result<i8, 8, 8> {
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_9bc799(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_9bc799 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, i32, read> = access %4, 1u
- %6:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_9bc799
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 41
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_9bc799 "subgroupMatrixLoad_9bc799"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %32 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_9bc799 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %23 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %26 = OpCooperativeMatrixLoadKHR %13 %23 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %26
+ %29 = OpLoad %13 %res None
+ OpReturnValue %29
+ OpFunctionEnd
+%compute_main = OpFunction %void None %32
+ %33 = OpLabel
+ %34 = OpFunctionCall %13 %subgroupMatrixLoad_9bc799
+ %35 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %37 = OpAccessChain %_ptr_StorageBuffer_int_0 %35 %uint_0
+ OpCooperativeMatrixStoreKHR %37 %34 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
index 0534ac9..12940a6 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
@@ -1,90 +1,75 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_9c4b12() -> subgroup_matrix_left<u8, 8, 8> {
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_9c4b12(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_9c4b12 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %5:ptr<storage, u32, read_write> = access %4, 1u
- %6:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_9c4b12
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 37
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_9c4b12 "subgroupMatrixLoad_9c4b12"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_9c4b12 = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %12 %21 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %12 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main = OpFunction %void None %30
+ %31 = OpLabel
+ %32 = OpFunctionCall %12 %subgroupMatrixLoad_9c4b12
+ %33 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %34 = OpAccessChain %_ptr_StorageBuffer_uint %33 %uint_0
+ OpCooperativeMatrixStoreKHR %34 %32 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
index 18f6c0d..3fb5b15 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
@@ -1,90 +1,78 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_ad687c() -> subgroup_matrix_left<u8, 8, 8> {
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_ad687c(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_ad687c = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, u32, read> = access %4, 1u
- %6:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_ad687c
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 39
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_ad687c "subgroupMatrixLoad_ad687c"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_ad687c = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %21 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %12 %21 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %12 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main = OpFunction %void None %30
+ %31 = OpLabel
+ %32 = OpFunctionCall %12 %subgroupMatrixLoad_ad687c
+ %33 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %35 = OpAccessChain %_ptr_StorageBuffer_uint_0 %33 %uint_0
+ OpCooperativeMatrixStoreKHR %35 %32 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/b19701.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
index 78c13fe..bb5afd4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
@@ -1,90 +1,79 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_b19701() -> subgroup_matrix_right<i8, 8, 8> {
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_b19701(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_b19701 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, i32, read> = access %4, 1u
- %6:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_b19701
- %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, i32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 40
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_b19701 "subgroupMatrixLoad_b19701"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_b19701 = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %23 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %13 %23 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %13 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %13 %subgroupMatrixLoad_b19701
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %36 = OpAccessChain %_ptr_StorageBuffer_int_0 %34 %uint_0
+ OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/b6f72c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/b6f72c.wgsl.expected.spvasm
index bc1b820..d819fcf 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/b6f72c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/b6f72c.wgsl.expected.spvasm
@@ -1,98 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-var<workgroup> arg_0 : array<u32, 1024>;
-
-fn subgroupMatrixLoad_b6f72c() -> subgroup_matrix_result<u8, 8, 8> {
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_b6f72c(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<workgroup, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<u32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_b6f72c = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, u32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, u32, read_write> = access %arg_0, %idx
- store %12, 0u
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_b6f72c
- %16:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, u32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_b6f72c "subgroupMatrixLoad_b6f72c"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_uint_uint_1024_0 = OpTypeArray %uint %uint_1024
+%_ptr_Workgroup__arr_uint_uint_1024_0 = OpTypePointer Workgroup %_arr_uint_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_uint_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_13 = OpTypePointer Function %13
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void %uint
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %55 = OpTypeFunction %void
+%subgroupMatrixLoad_b6f72c = OpFunction %13 None %18
+ %19 = OpLabel
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+ %23 = OpCooperativeMatrixLoadKHR %13 %20 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %23
+ %26 = OpLoad %13 %res None
+ OpReturnValue %26
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %30
+%tint_local_index = OpFunctionParameter %uint
+ %31 = OpLabel
+ OpBranch %32
+ %32 = OpLabel
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpPhi %uint %tint_local_index %32 %38 %34
+ OpLoopMerge %36 %34 None
+ OpBranch %33
+ %33 = OpLabel
+ %49 = OpUGreaterThanEqual %bool %37 %uint_1024
+ OpSelectionMerge %51 None
+ OpBranchConditional %49 %52 %51
+ %52 = OpLabel
+ OpBranch %36
+ %51 = OpLabel
+ %53 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %37
+ OpStore %53 %uint_0 NonPrivatePointer
+ OpBranch %34
+ %34 = OpLabel
+ %38 = OpIAdd %uint %37 %uint_1
+ OpBranch %35
+ %36 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %41 = OpFunctionCall %13 %subgroupMatrixLoad_b6f72c
+ %42 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %42 %uint_0
+ OpCooperativeMatrixStoreKHR %45 %41 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %55
+ %56 = OpLabel
+ %57 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %58 = OpFunctionCall %void %compute_main_inner %57
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
index 0d7c575..4eecac0 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
@@ -1,100 +1,96 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_bcfcb6() -> subgroup_matrix_left<u8, 8, 8> {
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_bcfcb6(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_bcfcb6 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %5:u32 = spirv.array_length %sb_ro, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read> = access %4, 1u
- %13:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_left<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_bcfcb6
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_bcfcb6 "subgroupMatrixLoad_bcfcb6"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %33 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %45 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_bcfcb6 = OpFunction %12 None %17
+ %18 = OpLabel
+ %31 = OpVariable %_ptr_Function_12 Function %33
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %21 = OpArrayLength %uint %sb_ro 0
+ %22 = OpIMul %uint %21 %uint_4
+ %24 = OpIMul %uint %uint_8 %uint_7
+ %26 = OpIAdd %uint %uint_1 %24
+ %28 = OpIAdd %uint %26 %uint_8
+ %29 = OpULessThanEqual %bool %28 %22
+ OpSelectionMerge %35 None
+ OpBranchConditional %29 %36 %35
+ %36 = OpLabel
+ %40 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %42 = OpCooperativeMatrixLoadKHR %12 %40 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %31 %42 None
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpLoad %12 %31 None
+ OpStore %res %37
+ %39 = OpLoad %12 %res None
+ OpReturnValue %39
+ OpFunctionEnd
+%compute_main = OpFunction %void None %45
+ %46 = OpLabel
+ %47 = OpFunctionCall %12 %subgroupMatrixLoad_bcfcb6
+ %48 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %50 = OpAccessChain %_ptr_StorageBuffer_uint_0 %48 %uint_0
+ OpCooperativeMatrixStoreKHR %50 %47 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
index 0b458df..9bd5604 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
@@ -1,90 +1,78 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_d72b92() -> subgroup_matrix_right<u8, 8, 8> {
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_d72b92(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:42 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_d72b92 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, u32, read> = access %4, 1u
- %6:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_d72b92
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 39
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_d72b92 "subgroupMatrixLoad_d72b92"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_d72b92 = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %12 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %12 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main = OpFunction %void None %30
+ %31 = OpLabel
+ %32 = OpFunctionCall %12 %subgroupMatrixLoad_d72b92
+ %33 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %35 = OpAccessChain %_ptr_StorageBuffer_uint_0 %33 %uint_0
+ OpCooperativeMatrixStoreKHR %35 %32 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/df0754.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/df0754.wgsl.expected.spvasm
index 2c25e6f..b9aefd9 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/df0754.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/df0754.wgsl.expected.spvasm
@@ -1,98 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-var<workgroup> arg_0 : array<i32, 1024>;
-
-fn subgroupMatrixLoad_df0754() -> subgroup_matrix_left<i8, 8, 8> {
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_df0754(), false, 64);
-}
-
-Failed to generate SPIR-V: :13:41 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<workgroup, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %5:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %4, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:11:3 note: in block
- $B2: {
- ^^^
-
-:45:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:20:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %arg_0:ptr<workgroup, array<i32, 1024>, read_write> = var undef
-}
-
-%subgroupMatrixLoad_df0754 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %4:ptr<workgroup, i32, read_write> = access %arg_0, 1u
- %5:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %4, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %5
- %7:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %7
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func(%tint_local_index:u32 [@local_invocation_index]):void {
- $B3: {
- loop [i: $B4, b: $B5, c: $B6] { # loop_1
- $B4: { # initializer
- next_iteration %tint_local_index # -> $B5
- }
- $B5 (%idx:u32): { # body
- %11:bool = gte %idx, 1024u
- if %11 [t: $B7] { # if_1
- $B7: { # true
- exit_loop # loop_1
- }
- }
- %12:ptr<workgroup, i32, read_write> = access %arg_0, %idx
- store %12, 0i
- continue # -> $B6
- }
- $B6: { # continuing
- %13:u32 = add %idx, 1u
- next_iteration %13 # -> $B5
- }
- }
- %14:void = workgroupBarrier
- %15:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_df0754
- %16:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %17:ptr<storage, i32, read_write> = access %16, 0u
- %18:void = spirv.cooperative_matrix_store %17, %15, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main" %compute_main_local_invocation_index_Input
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpName %arg_0 "arg_0"
+ OpName %compute_main_local_invocation_index_Input "compute_main_local_invocation_index_Input"
+ OpName %subgroupMatrixLoad_df0754 "subgroupMatrixLoad_df0754"
+ OpName %res "res"
+ OpName %compute_main_inner "compute_main_inner"
+ OpName %tint_local_index "tint_local_index"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %compute_main_local_invocation_index_Input BuiltIn LocalInvocationIndex
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_arr_int_uint_1024_0 = OpTypeArray %int %uint_1024
+%_ptr_Workgroup__arr_int_uint_1024_0 = OpTypePointer Workgroup %_arr_int_uint_1024_0
+ %arg_0 = OpVariable %_ptr_Workgroup__arr_int_uint_1024_0 Workgroup
+%_ptr_Input_uint = OpTypePointer Input %uint
+%compute_main_local_invocation_index_Input = OpVariable %_ptr_Input_uint Input
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %14 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %19 = OpTypeFunction %14
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_14 = OpTypePointer Function %14
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void %uint
+ %uint_2 = OpConstant %uint 2
+ %uint_24840 = OpConstant %uint 24840
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+ %bool = OpTypeBool
+ %int_0 = OpConstant %int 0
+ %57 = OpTypeFunction %void
+%subgroupMatrixLoad_df0754 = OpFunction %14 None %19
+ %20 = OpLabel
+ %res = OpVariable %_ptr_Function_14 Function
+ %21 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+ %24 = OpCooperativeMatrixLoadKHR %14 %21 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %24
+ %27 = OpLoad %14 %res None
+ OpReturnValue %27
+ OpFunctionEnd
+%compute_main_inner = OpFunction %void None %31
+%tint_local_index = OpFunctionParameter %uint
+ %32 = OpLabel
+ OpBranch %33
+ %33 = OpLabel
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpPhi %uint %tint_local_index %33 %39 %35
+ OpLoopMerge %37 %35 None
+ OpBranch %34
+ %34 = OpLabel
+ %50 = OpUGreaterThanEqual %bool %38 %uint_1024
+ OpSelectionMerge %52 None
+ OpBranchConditional %50 %53 %52
+ %53 = OpLabel
+ OpBranch %37
+ %52 = OpLabel
+ %54 = OpAccessChain %_ptr_Workgroup_int %arg_0 %38
+ OpStore %54 %int_0 NonPrivatePointer
+ OpBranch %35
+ %35 = OpLabel
+ %39 = OpIAdd %uint %38 %uint_1
+ OpBranch %36
+ %37 = OpLabel
+ OpControlBarrier %uint_2 %uint_2 %uint_24840
+ %43 = OpFunctionCall %14 %subgroupMatrixLoad_df0754
+ %44 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %44 %uint_0
+ OpCooperativeMatrixStoreKHR %46 %43 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %57
+ %58 = OpLabel
+ %59 = OpLoad %uint %compute_main_local_invocation_index_Input None
+ %60 = OpFunctionCall %void %compute_main_inner %59
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/e40231.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
index cf5ea7e..f6c8218 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
@@ -1,100 +1,96 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_e40231() -> subgroup_matrix_result<i8, 8, 8> {
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_e40231(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_e40231 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, i32, read_write> = access %4, 1u
- %13:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_result<i8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_e40231
- %19:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, i32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 55
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_e40231 "subgroupMatrixLoad_e40231"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %35 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %47 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_e40231 = OpFunction %13 None %18
+ %19 = OpLabel
+ %33 = OpVariable %_ptr_Function_13 Function %35
+ %res = OpVariable %_ptr_Function_13 Function
+ %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %23 = OpArrayLength %uint %sb_rw 0
+ %24 = OpIMul %uint %23 %uint_4
+ %26 = OpIMul %uint %uint_8 %uint_7
+ %28 = OpIAdd %uint %uint_1 %26
+ %30 = OpIAdd %uint %28 %uint_8
+ %31 = OpULessThanEqual %bool %30 %24
+ OpSelectionMerge %37 None
+ OpBranchConditional %31 %38 %37
+ %38 = OpLabel
+ %42 = OpAccessChain %_ptr_StorageBuffer_int %20 %uint_1
+ %44 = OpCooperativeMatrixLoadKHR %13 %42 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %33 %44 None
+ OpBranch %37
+ %37 = OpLabel
+ %39 = OpLoad %13 %33 None
+ OpStore %res %39
+ %41 = OpLoad %13 %res None
+ OpReturnValue %41
+ OpFunctionEnd
+%compute_main = OpFunction %void None %47
+ %48 = OpLabel
+ %49 = OpFunctionCall %13 %subgroupMatrixLoad_e40231
+ %50 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %52 = OpAccessChain %_ptr_StorageBuffer_int %50 %uint_0
+ OpCooperativeMatrixStoreKHR %52 %49 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
index 5e08f62..a39e211 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
@@ -1,100 +1,95 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_e5381c() -> subgroup_matrix_result<u8, 8, 8> {
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_e5381c(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_e5381c = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read_write> = access %4, 1u
- %13:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_result<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_e5381c
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 54
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_e5381c "subgroupMatrixLoad_e5381c"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %uint_1 = OpConstant %uint 1
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %34 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %46 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_e5381c = OpFunction %12 None %17
+ %18 = OpLabel
+ %32 = OpVariable %_ptr_Function_12 Function %34
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %22 = OpArrayLength %uint %sb_rw 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %29 = OpIAdd %uint %27 %uint_8
+ %30 = OpULessThanEqual %bool %29 %23
+ OpSelectionMerge %36 None
+ OpBranchConditional %30 %37 %36
+ %37 = OpLabel
+ %41 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %43 = OpCooperativeMatrixLoadKHR %12 %41 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %32 %43 None
+ OpBranch %36
+ %36 = OpLabel
+ %38 = OpLoad %12 %32 None
+ OpStore %res %38
+ %40 = OpLoad %12 %res None
+ OpReturnValue %40
+ OpFunctionEnd
+%compute_main = OpFunction %void None %46
+ %47 = OpLabel
+ %48 = OpFunctionCall %12 %subgroupMatrixLoad_e5381c
+ %49 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %51 = OpAccessChain %_ptr_StorageBuffer_uint %49 %uint_0
+ OpCooperativeMatrixStoreKHR %51 %48 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
index dc40b3d..4147c1b 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
@@ -1,100 +1,94 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_f364a9() -> subgroup_matrix_right<u8, 8, 8> {
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_rw.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_f364a9(), false, 64);
-}
-
-Failed to generate SPIR-V: :27:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %12, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:25:7 note: in block
- $B3: { # true
- ^^^
-
-:43:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:39:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_f364a9 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %5:u32 = spirv.array_length %sb_rw, 0u
- %6:u32 = mul %5, 4u
- %7:u32 = mul 8u, 7u
- %8:u32 = add 1u, %7
- %9:u32 = add %8, 8u
- %10:bool = lte %9, %6
- %11:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %10 [t: $B3] { # if_1
- $B3: { # true
- %12:ptr<storage, u32, read_write> = access %4, 1u
- %13:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %12, 1u, 8u, 32u
- store %11, %13
- exit_if # if_1
- }
- }
- %14:subgroup_matrix_right<u8, 8, 8> = load %11
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %14
- %16:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %16
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %18:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_f364a9
- %19:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %20:ptr<storage, u32, read_write> = access %19, 0u
- %21:void = spirv.cooperative_matrix_store %20, %18, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 53
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_f364a9 "subgroupMatrixLoad_f364a9"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %33 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %45 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_f364a9 = OpFunction %12 None %17
+ %18 = OpLabel
+ %31 = OpVariable %_ptr_Function_12 Function %33
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %22 = OpArrayLength %uint %sb_rw 0
+ %23 = OpIMul %uint %22 %uint_4
+ %25 = OpIMul %uint %uint_8 %uint_7
+ %27 = OpIAdd %uint %uint_1 %25
+ %28 = OpIAdd %uint %27 %uint_8
+ %29 = OpULessThanEqual %bool %28 %23
+ OpSelectionMerge %35 None
+ OpBranchConditional %29 %36 %35
+ %36 = OpLabel
+ %40 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %42 = OpCooperativeMatrixLoadKHR %12 %40 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %31 %42 None
+ OpBranch %35
+ %35 = OpLabel
+ %37 = OpLoad %12 %31 None
+ OpStore %res %37
+ %39 = OpLoad %12 %res None
+ OpReturnValue %39
+ OpFunctionEnd
+%compute_main = OpFunction %void None %45
+ %46 = OpLabel
+ %47 = OpFunctionCall %12 %subgroupMatrixLoad_f364a9
+ %48 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %50 = OpAccessChain %_ptr_StorageBuffer_uint %48 %uint_0
+ OpCooperativeMatrixStoreKHR %50 %47 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
index 6a1a416..c660d69 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
@@ -1,90 +1,79 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_f86f9f() -> subgroup_matrix_result<u8, 8, 8> {
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_ro.arg_0), 1u, true, 8u);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_f86f9f(), false, 64);
-}
-
-Failed to generate SPIR-V: :22:43 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %6:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %5, 1u, 8u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:19:3 note: in block
- $B2: {
- ^^^
-
-:33:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:29:3 note: in block
- $B3: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_f86f9f = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %4:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %5:ptr<storage, u32, read> = access %4, 1u
- %6:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %5, 1u, 8u, 32u
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %6
- %8:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %8
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B3: {
- %10:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_f86f9f
- %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %12:ptr<storage, u32, read_write> = access %11, 0u
- %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 40
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_f86f9f "subgroupMatrixLoad_f86f9f"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_12 = OpTypePointer Function %12
+ %void = OpTypeVoid
+ %31 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_f86f9f = OpFunction %12 None %17
+ %18 = OpLabel
+ %res = OpVariable %_ptr_Function_12 Function
+ %19 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %22 = OpAccessChain %_ptr_StorageBuffer_uint %19 %uint_1
+ %25 = OpCooperativeMatrixLoadKHR %12 %22 %uint_1 %uint_8 NonPrivatePointer
+ OpStore %res %25
+ %28 = OpLoad %12 %res None
+ OpReturnValue %28
+ OpFunctionEnd
+%compute_main = OpFunction %void None %31
+ %32 = OpLabel
+ %33 = OpFunctionCall %12 %subgroupMatrixLoad_f86f9f
+ %34 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %36 = OpAccessChain %_ptr_StorageBuffer_uint_0 %34 %uint_0
+ OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
index feffd65..a41be20 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/03a4db.wgsl.expected.spvasm
@@ -1,108 +1,109 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_03a4db() -> subgroup_matrix_result<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_03a4db(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_03a4db = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read> = access %6, %7
- %18:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_result<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_03a4db
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 63
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %30 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_03a4db "subgroupMatrixLoad_03a4db"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %42 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %54 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_03a4db = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %40 = OpVariable %_ptr_Function_13 Function %42
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %uint %arg_3 None
+ %29 = OpExtInst %uint %30 UMax %28 %uint_8
+ %31 = OpArrayLength %uint %sb_ro 0
+ %32 = OpIMul %uint %31 %uint_4
+ %34 = OpIMul %uint %29 %uint_7
+ %36 = OpIAdd %uint %27 %34
+ %37 = OpIAdd %uint %36 %uint_8
+ %38 = OpULessThanEqual %bool %37 %32
+ OpSelectionMerge %44 None
+ OpBranchConditional %38 %45 %44
+ %45 = OpLabel
+ %49 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+ %51 = OpCooperativeMatrixLoadKHR %13 %49 %uint_1 %29 NonPrivatePointer
+ OpStore %40 %51 None
+ OpBranch %44
+ %44 = OpLabel
+ %46 = OpLoad %13 %40 None
+ OpStore %res %46
+ %48 = OpLoad %13 %res None
+ OpReturnValue %48
+ OpFunctionEnd
+%compute_main = OpFunction %void None %54
+ %55 = OpLabel
+ %56 = OpFunctionCall %13 %subgroupMatrixLoad_03a4db
+ %57 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %59 = OpAccessChain %_ptr_StorageBuffer_int_0 %57 %uint_0
+ OpCooperativeMatrixStoreKHR %59 %56 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
index 89be14d..69e5474 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/0f7739.wgsl.expected.spvasm
@@ -1,108 +1,106 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_0f7739() -> subgroup_matrix_left<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_0f7739(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_0f7739 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read_write> = access %6, %7
- %18:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_left<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_0f7739
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_0f7739 "subgroupMatrixLoad_0f7739"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %41 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_0f7739 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_13 Function %41
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_rw 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
+ %50 = OpCooperativeMatrixLoadKHR %13 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %13 %39 None
+ OpStore %res %45
+ %47 = OpLoad %13 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %13 %subgroupMatrixLoad_0f7739
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_int %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/122298.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/122298.wgsl.expected.spvasm
index 3b08541..593fe7f 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/122298.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/122298.wgsl.expected.spvasm
@@ -1,110 +1,104 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_122298() -> subgroup_matrix_left<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_122298(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_122298 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read_write> = access %6, %7
- %16:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_left<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_122298
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 58
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_122298 "subgroupMatrixLoad_122298"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %39 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_122298 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_13 Function %39
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
+ %48 = OpCooperativeMatrixLoadKHR %13 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %13 %37 None
+ OpStore %res %43
+ %45 = OpLoad %13 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %13 %subgroupMatrixLoad_122298
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %55 = OpAccessChain %_ptr_StorageBuffer_int %54 %uint_0
+ OpCooperativeMatrixStoreKHR %55 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/297099.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/297099.wgsl.expected.spvasm
index 0dbdffe..5706865 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/297099.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/297099.wgsl.expected.spvasm
@@ -1,110 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_297099() -> subgroup_matrix_result<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_297099(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_297099 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read_write> = access %6, %7
- %16:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_result<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_297099
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %30 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_297099 "subgroupMatrixLoad_297099"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %40 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_297099 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_13 Function %40
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %uint %arg_3 None
+ %29 = OpExtInst %uint %30 UMax %28 %uint_8
+ %31 = OpIMul %uint %29 %uint_7
+ %33 = OpIAdd %uint %27 %31
+ %34 = OpIAdd %uint %33 %uint_8
+ %35 = OpULessThanEqual %bool %34 %uint_4096
+ OpSelectionMerge %42 None
+ OpBranchConditional %35 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+ %49 = OpCooperativeMatrixLoadKHR %13 %47 %uint_1 %29 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %13 %38 None
+ OpStore %res %44
+ %46 = OpLoad %13 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %13 %subgroupMatrixLoad_297099
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %56 = OpAccessChain %_ptr_StorageBuffer_int %55 %uint_0
+ OpCooperativeMatrixStoreKHR %56 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/29f533.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
index 92f7a11..8a44ec7 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/29f533.wgsl.expected.spvasm
@@ -1,108 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_29f533() -> subgroup_matrix_left<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_29f533(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_29f533 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read_write> = access %6, %7
- %18:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_left<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_29f533
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_29f533 "subgroupMatrixLoad_29f533"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %40 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_29f533 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_12 Function %40
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpArrayLength %uint %sb_rw 0
+ %30 = OpIMul %uint %29 %uint_4
+ %32 = OpIMul %uint %27 %uint_7
+ %34 = OpIAdd %uint %25 %32
+ %35 = OpIAdd %uint %34 %uint_8
+ %36 = OpULessThanEqual %bool %35 %30
+ OpSelectionMerge %42 None
+ OpBranchConditional %36 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
+ %49 = OpCooperativeMatrixLoadKHR %12 %47 %uint_1 %27 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %12 %38 None
+ OpStore %res %44
+ %46 = OpLoad %12 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %12 %subgroupMatrixLoad_29f533
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %57 = OpAccessChain %_ptr_StorageBuffer_uint %55 %uint_0
+ OpCooperativeMatrixStoreKHR %57 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
index d4e8520..3c44291 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/3f3203.wgsl.expected.spvasm
@@ -1,110 +1,104 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_3f3203() -> subgroup_matrix_result<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_3f3203(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_3f3203 = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read_write> = access %6, %7
- %16:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_result<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_3f3203
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 58
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_3f3203 "subgroupMatrixLoad_3f3203"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %39 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_3f3203 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_12 Function %39
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+ %48 = OpCooperativeMatrixLoadKHR %12 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %12 %37 None
+ OpStore %res %43
+ %45 = OpLoad %12 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %12 %subgroupMatrixLoad_3f3203
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %55 = OpAccessChain %_ptr_StorageBuffer_uint %54 %uint_0
+ OpCooperativeMatrixStoreKHR %55 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/567359.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/567359.wgsl.expected.spvasm
index f777bb6..9b32c41 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/567359.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/567359.wgsl.expected.spvasm
@@ -1,108 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_567359() -> subgroup_matrix_right<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_567359(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_567359 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read> = access %6, %7
- %18:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_right<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_567359
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_567359 "subgroupMatrixLoad_567359"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %40 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_567359 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_12 Function %40
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpArrayLength %uint %sb_ro 0
+ %30 = OpIMul %uint %29 %uint_4
+ %32 = OpIMul %uint %27 %uint_7
+ %34 = OpIAdd %uint %25 %32
+ %35 = OpIAdd %uint %34 %uint_8
+ %36 = OpULessThanEqual %bool %35 %30
+ OpSelectionMerge %42 None
+ OpBranchConditional %36 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+ %49 = OpCooperativeMatrixLoadKHR %12 %47 %uint_1 %27 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %12 %38 None
+ OpStore %res %44
+ %46 = OpLoad %12 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %12 %subgroupMatrixLoad_567359
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %57 = OpAccessChain %_ptr_StorageBuffer_uint_0 %55 %uint_0
+ OpCooperativeMatrixStoreKHR %57 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
index b1edb7b..0dfa90b 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/58b2f2.wgsl.expected.spvasm
@@ -1,108 +1,108 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_58b2f2() -> subgroup_matrix_right<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_58b2f2(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_58b2f2 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read> = access %6, %7
- %18:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_right<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_58b2f2
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 62
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_58b2f2 "subgroupMatrixLoad_58b2f2"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %41 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_58b2f2 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_13 Function %41
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_ro 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+ %50 = OpCooperativeMatrixLoadKHR %13 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %13 %39 None
+ OpStore %res %45
+ %47 = OpLoad %13 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %13 %subgroupMatrixLoad_58b2f2
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_int_0 %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
index 6925302..5ff1145 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/5e2602.wgsl.expected.spvasm
@@ -1,108 +1,108 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_5e2602() -> subgroup_matrix_result<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_5e2602(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_5e2602 = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read> = access %6, %7
- %18:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_result<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_5e2602
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 62
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_5e2602 "subgroupMatrixLoad_5e2602"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %41 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_5e2602 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_12 Function %41
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_ro 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+ %50 = OpCooperativeMatrixLoadKHR %12 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %12 %39 None
+ OpStore %res %45
+ %47 = OpLoad %12 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %12 %subgroupMatrixLoad_5e2602
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_uint_0 %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
index a42779b..5b97b2a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/664e6e.wgsl.expected.spvasm
@@ -1,108 +1,106 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_664e6e() -> subgroup_matrix_right<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_664e6e(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_664e6e = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read_write> = access %6, %7
- %18:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_right<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_664e6e
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_664e6e "subgroupMatrixLoad_664e6e"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %41 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_664e6e = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_13 Function %41
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_rw 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+ %50 = OpCooperativeMatrixLoadKHR %13 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %13 %39 None
+ OpStore %res %45
+ %47 = OpLoad %13 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %13 %subgroupMatrixLoad_664e6e
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_int %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
index 427adde..97810e1 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/6778bb.wgsl.expected.spvasm
@@ -1,110 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_6778bb() -> subgroup_matrix_left<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_6778bb(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_6778bb = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read> = access %6, %7
- %16:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_left<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_6778bb
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_6778bb "subgroupMatrixLoad_6778bb"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %39 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_6778bb = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_13 Function %39
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
+ %48 = OpCooperativeMatrixLoadKHR %13 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %13 %37 None
+ OpStore %res %43
+ %45 = OpLoad %13 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %13 %subgroupMatrixLoad_6778bb
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %56 = OpAccessChain %_ptr_StorageBuffer_int_0 %54 %uint_0
+ OpCooperativeMatrixStoreKHR %56 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
index 592ab46..1922d7a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/86df2e.wgsl.expected.spvasm
@@ -1,110 +1,103 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_86df2e() -> subgroup_matrix_right<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_86df2e(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_86df2e = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read_write> = access %6, %7
- %16:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_right<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_86df2e
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 57
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_86df2e "subgroupMatrixLoad_86df2e"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %38 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %50 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_86df2e = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %36 = OpVariable %_ptr_Function_12 Function %38
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %22 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpIMul %uint %27 %uint_7
+ %31 = OpIAdd %uint %25 %29
+ %32 = OpIAdd %uint %31 %uint_8
+ %33 = OpULessThanEqual %bool %32 %uint_4096
+ OpSelectionMerge %40 None
+ OpBranchConditional %33 %41 %40
+ %41 = OpLabel
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+ %47 = OpCooperativeMatrixLoadKHR %12 %45 %uint_1 %27 NonPrivatePointer
+ OpStore %36 %47 None
+ OpBranch %40
+ %40 = OpLabel
+ %42 = OpLoad %12 %36 None
+ OpStore %res %42
+ %44 = OpLoad %12 %res None
+ OpReturnValue %44
+ OpFunctionEnd
+%compute_main = OpFunction %void None %50
+ %51 = OpLabel
+ %52 = OpFunctionCall %12 %subgroupMatrixLoad_86df2e
+ %53 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %54 = OpAccessChain %_ptr_StorageBuffer_uint %53 %uint_0
+ OpCooperativeMatrixStoreKHR %54 %52 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
index e53b1f5..c9d8a46 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/8861f0.wgsl.expected.spvasm
@@ -1,110 +1,104 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_8861f0() -> subgroup_matrix_right<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_8861f0(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_8861f0 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read_write> = access %6, %7
- %16:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_right<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_8861f0
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 58
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_8861f0 "subgroupMatrixLoad_8861f0"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %39 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_8861f0 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_13 Function %39
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+ %48 = OpCooperativeMatrixLoadKHR %13 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %13 %37 None
+ OpStore %res %43
+ %45 = OpLoad %13 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %13 %subgroupMatrixLoad_8861f0
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %55 = OpAccessChain %_ptr_StorageBuffer_int %54 %uint_0
+ OpCooperativeMatrixStoreKHR %55 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
index 3879830..2273952 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/91abc9.wgsl.expected.spvasm
@@ -1,108 +1,108 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_91abc9() -> subgroup_matrix_left<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_91abc9(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_left<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_91abc9 = func():subgroup_matrix_left<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read> = access %6, %7
- %18:subgroup_matrix_left<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_left<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_left<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_left<i8, 8, 8> = call %subgroupMatrixLoad_91abc9
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 62
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_91abc9 "subgroupMatrixLoad_91abc9"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_0 = OpConstant %uint 0
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_0
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %41 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_91abc9 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_13 Function %41
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_ro %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_ro 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
+ %50 = OpCooperativeMatrixLoadKHR %13 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %13 %39 None
+ OpStore %res %45
+ %47 = OpLoad %13 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %13 %subgroupMatrixLoad_91abc9
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_int_0 %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
index a3b88ce..8466c82 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/9bc799.wgsl.expected.spvasm
@@ -1,110 +1,108 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_9bc799() -> subgroup_matrix_result<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_9bc799(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_9bc799 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read> = access %6, %7
- %16:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_result<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_9bc799
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %30 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_9bc799 "subgroupMatrixLoad_9bc799"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %40 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_9bc799 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_13 Function %40
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %uint %arg_3 None
+ %29 = OpExtInst %uint %30 UMax %28 %uint_8
+ %31 = OpIMul %uint %29 %uint_7
+ %33 = OpIAdd %uint %27 %31
+ %34 = OpIAdd %uint %33 %uint_8
+ %35 = OpULessThanEqual %bool %34 %uint_4096
+ OpSelectionMerge %42 None
+ OpBranchConditional %35 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+ %49 = OpCooperativeMatrixLoadKHR %13 %47 %uint_1 %29 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %13 %38 None
+ OpStore %res %44
+ %46 = OpLoad %13 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %13 %subgroupMatrixLoad_9bc799
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %57 = OpAccessChain %_ptr_StorageBuffer_int_0 %55 %uint_0
+ OpCooperativeMatrixStoreKHR %57 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
index 19274f8..670db00 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/9c4b12.wgsl.expected.spvasm
@@ -1,110 +1,103 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_9c4b12() -> subgroup_matrix_left<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_9c4b12(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_rw_block = struct @align(4), @block {
- inner:SB_RW @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_rw_block, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_9c4b12 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read_write> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read_write> = access %6, %7
- %16:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_left<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_9c4b12
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 57
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpMemberName %sb_rw_block_tint_explicit_layout 0 "inner"
+ OpName %sb_rw_block_tint_explicit_layout "sb_rw_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_9c4b12 "subgroupMatrixLoad_9c4b12"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_rw_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_rw_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RW_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_rw_block_tint_explicit_layout = OpTypeStruct %SB_RW_tint_explicit_layout
+%_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_rw_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_rw_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %38 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %50 = OpTypeFunction %void
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_9c4b12 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %36 = OpVariable %_ptr_Function_12 Function %38
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpIMul %uint %27 %uint_7
+ %31 = OpIAdd %uint %25 %29
+ %32 = OpIAdd %uint %31 %uint_8
+ %33 = OpULessThanEqual %bool %32 %uint_4096
+ OpSelectionMerge %40 None
+ OpBranchConditional %33 %41 %40
+ %41 = OpLabel
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
+ %47 = OpCooperativeMatrixLoadKHR %12 %45 %uint_1 %27 NonPrivatePointer
+ OpStore %36 %47 None
+ OpBranch %40
+ %40 = OpLabel
+ %42 = OpLoad %12 %36 None
+ OpStore %res %42
+ %44 = OpLoad %12 %res None
+ OpReturnValue %44
+ OpFunctionEnd
+%compute_main = OpFunction %void None %50
+ %51 = OpLabel
+ %52 = OpFunctionCall %12 %subgroupMatrixLoad_9c4b12
+ %53 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %54 = OpAccessChain %_ptr_StorageBuffer_uint %53 %uint_0
+ OpCooperativeMatrixStoreKHR %54 %52 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
index 6bcfe5c..246eca8 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/ad687c.wgsl.expected.spvasm
@@ -1,110 +1,106 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_ad687c() -> subgroup_matrix_left<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_ad687c(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_ad687c = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read> = access %6, %7
- %16:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_left<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_ad687c
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_ad687c "subgroupMatrixLoad_ad687c"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %38 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %50 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_ad687c = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %36 = OpVariable %_ptr_Function_12 Function %38
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpIMul %uint %27 %uint_7
+ %31 = OpIAdd %uint %25 %29
+ %32 = OpIAdd %uint %31 %uint_8
+ %33 = OpULessThanEqual %bool %32 %uint_4096
+ OpSelectionMerge %40 None
+ OpBranchConditional %33 %41 %40
+ %41 = OpLabel
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
+ %47 = OpCooperativeMatrixLoadKHR %12 %45 %uint_1 %27 NonPrivatePointer
+ OpStore %36 %47 None
+ OpBranch %40
+ %40 = OpLabel
+ %42 = OpLoad %12 %36 None
+ OpStore %res %42
+ %44 = OpLoad %12 %res None
+ OpReturnValue %44
+ OpFunctionEnd
+%compute_main = OpFunction %void None %50
+ %51 = OpLabel
+ %52 = OpFunctionCall %12 %subgroupMatrixLoad_ad687c
+ %53 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %55 = OpAccessChain %_ptr_StorageBuffer_uint_0 %53 %uint_0
+ OpCooperativeMatrixStoreKHR %55 %52 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/b19701.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
index 6f366b2..09e2cd6 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/b19701.wgsl.expected.spvasm
@@ -1,110 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RO {
- arg_0 : array<i32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_b19701() -> subgroup_matrix_right<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<i8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_b19701(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>>(ptr<storage, i32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_right<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<i32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_b19701 = func():subgroup_matrix_right<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, i32, read> = access %6, %7
- %16:subgroup_matrix_right<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<i8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_right<i8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_right<i8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_right<i8, 8, 8> = call %subgroupMatrixLoad_b19701
- %22:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, i32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_b19701 "subgroupMatrixLoad_b19701"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %8 DescriptorSet 0
+ OpDecorate %8 Binding 1
+ OpDecorate %8 NonWritable
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %8 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_1 = OpConstant %uint 1
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_1
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %39 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024_0 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+%_ptr_StorageBuffer_int_0 = OpTypePointer StorageBuffer %int
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_b19701 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_13 Function %39
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %8 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+ %48 = OpCooperativeMatrixLoadKHR %13 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %13 %37 None
+ OpStore %res %43
+ %45 = OpLoad %13 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %13 %subgroupMatrixLoad_b19701
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024_0 %1 %uint_0
+ %56 = OpAccessChain %_ptr_StorageBuffer_int_0 %54 %uint_0
+ OpCooperativeMatrixStoreKHR %56 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
index 1abd6f3..a4c2d07 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/bcfcb6.wgsl.expected.spvasm
@@ -1,108 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_bcfcb6() -> subgroup_matrix_left<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_left<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_left<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_bcfcb6(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:46 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_left<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_ro:ptr<storage, SB_RO, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_bcfcb6 = func():subgroup_matrix_left<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read> = access %sb_ro, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_ro, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read> = access %6, %7
- %18:subgroup_matrix_left<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_left<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_left<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_left<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_left<u8, 8, 8> = call %subgroupMatrixLoad_bcfcb6
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpName %sb_ro "sb_ro"
+ OpName %subgroupMatrixLoad_bcfcb6 "subgroupMatrixLoad_bcfcb6"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RO_tint_explicit_layout Block
+ OpDecorate %sb_ro DescriptorSet 0
+ OpDecorate %sb_ro Binding 1
+ OpDecorate %sb_ro NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RO_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RO_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RO_tint_explicit_layout
+ %sb_ro = OpVariable %_ptr_StorageBuffer_SB_RO_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_0 = OpConstant %uint 0
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_0
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %40 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_bcfcb6 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_12 Function %40
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_ro %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpArrayLength %uint %sb_ro 0
+ %30 = OpIMul %uint %29 %uint_4
+ %32 = OpIMul %uint %27 %uint_7
+ %34 = OpIAdd %uint %25 %32
+ %35 = OpIAdd %uint %34 %uint_8
+ %36 = OpULessThanEqual %bool %35 %30
+ OpSelectionMerge %42 None
+ OpBranchConditional %36 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
+ %49 = OpCooperativeMatrixLoadKHR %12 %47 %uint_1 %27 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %12 %38 None
+ OpStore %res %44
+ %46 = OpLoad %12 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %12 %subgroupMatrixLoad_bcfcb6
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %57 = OpAccessChain %_ptr_StorageBuffer_uint_0 %55 %uint_0
+ OpCooperativeMatrixStoreKHR %57 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
index 455594c..66be45a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/d72b92.wgsl.expected.spvasm
@@ -1,110 +1,106 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_d72b92() -> subgroup_matrix_right<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_d72b92(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_d72b92 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read> = access %6, %7
- %16:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_right<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_d72b92
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_d72b92 "subgroupMatrixLoad_d72b92"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %38 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %50 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_d72b92 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %36 = OpVariable %_ptr_Function_12 Function %38
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %22 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpIMul %uint %27 %uint_7
+ %31 = OpIAdd %uint %25 %29
+ %32 = OpIAdd %uint %31 %uint_8
+ %33 = OpULessThanEqual %bool %32 %uint_4096
+ OpSelectionMerge %40 None
+ OpBranchConditional %33 %41 %40
+ %41 = OpLabel
+ %45 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+ %47 = OpCooperativeMatrixLoadKHR %12 %45 %uint_1 %27 NonPrivatePointer
+ OpStore %36 %47 None
+ OpBranch %40
+ %40 = OpLabel
+ %42 = OpLoad %12 %36 None
+ OpStore %res %42
+ %44 = OpLoad %12 %res None
+ OpReturnValue %44
+ OpFunctionEnd
+%compute_main = OpFunction %void None %50
+ %51 = OpLabel
+ %52 = OpFunctionCall %12 %subgroupMatrixLoad_d72b92
+ %53 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %55 = OpAccessChain %_ptr_StorageBuffer_uint_0 %53 %uint_0
+ OpCooperativeMatrixStoreKHR %55 %52 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/e40231.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
index 078cb99..957c433 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/e40231.wgsl.expected.spvasm
@@ -1,108 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
-
-struct SB_RW {
- arg_0 : array<i32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_e40231() -> subgroup_matrix_result<i8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<i8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<i8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_e40231(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>>(ptr<storage, i32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, i32, read_write>, subgroup_matrix_result<i8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<i32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<i32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_e40231 = func():subgroup_matrix_result<i8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<i32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, i32, read_write> = access %6, %7
- %18:subgroup_matrix_result<i8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<i8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_result<i8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_result<i8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_result<i8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_result<i8, 8, 8> = call %subgroupMatrixLoad_e40231
- %24:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, i32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 62
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %30 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_e40231 "subgroupMatrixLoad_e40231"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_int_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_int ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %int = OpTypeInt 32 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_int_uint_1024 = OpTypeArray %int %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_int_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_int = OpTypeRuntimeArray %int
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_int
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %char = OpTypeInt 8 1
+ %uint_2 = OpConstant %uint 2
+ %13 = OpTypeCooperativeMatrixKHR %char %uint_3 %uint_8 %uint_8 %uint_2
+ %18 = OpTypeFunction %13
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_13 = OpTypePointer Function %13
+ %char_0 = OpConstant %char 0
+ %42 = OpConstantComposite %13 %char_0
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+ %void = OpTypeVoid
+ %54 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_e40231 = OpFunction %13 None %18
+ %19 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %40 = OpVariable %_ptr_Function_13 Function %42
+ %res = OpVariable %_ptr_Function_13 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %24 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+ %27 = OpLoad %uint %arg_1 None
+ %28 = OpLoad %uint %arg_3 None
+ %29 = OpExtInst %uint %30 UMax %28 %uint_8
+ %31 = OpArrayLength %uint %sb_rw 0
+ %32 = OpIMul %uint %31 %uint_4
+ %34 = OpIMul %uint %29 %uint_7
+ %36 = OpIAdd %uint %27 %34
+ %37 = OpIAdd %uint %36 %uint_8
+ %38 = OpULessThanEqual %bool %37 %32
+ OpSelectionMerge %44 None
+ OpBranchConditional %38 %45 %44
+ %45 = OpLabel
+ %49 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+ %51 = OpCooperativeMatrixLoadKHR %13 %49 %uint_1 %29 NonPrivatePointer
+ OpStore %40 %51 None
+ OpBranch %44
+ %44 = OpLabel
+ %46 = OpLoad %13 %40 None
+ OpStore %res %46
+ %48 = OpLoad %13 %res None
+ OpReturnValue %48
+ OpFunctionEnd
+%compute_main = OpFunction %void None %54
+ %55 = OpLabel
+ %56 = OpFunctionCall %13 %subgroupMatrixLoad_e40231
+ %57 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+ %59 = OpAccessChain %_ptr_StorageBuffer_int %57 %uint_0
+ OpCooperativeMatrixStoreKHR %59 %56 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
index de589ef..c1114ab 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/e5381c.wgsl.expected.spvasm
@@ -1,108 +1,106 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_e5381c() -> subgroup_matrix_result<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_e5381c(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_e5381c = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read_write> = access %6, %7
- %18:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_result<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_e5381c
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 61
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_e5381c "subgroupMatrixLoad_e5381c"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %41 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_e5381c = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %39 = OpVariable %_ptr_Function_12 Function %41
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpArrayLength %uint %sb_rw 0
+ %31 = OpIMul %uint %30 %uint_4
+ %33 = OpIMul %uint %28 %uint_7
+ %35 = OpIAdd %uint %26 %33
+ %36 = OpIAdd %uint %35 %uint_8
+ %37 = OpULessThanEqual %bool %36 %31
+ OpSelectionMerge %43 None
+ OpBranchConditional %37 %44 %43
+ %44 = OpLabel
+ %48 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+ %50 = OpCooperativeMatrixLoadKHR %12 %48 %uint_1 %28 NonPrivatePointer
+ OpStore %39 %50 None
+ OpBranch %43
+ %43 = OpLabel
+ %45 = OpLoad %12 %39 None
+ OpStore %res %45
+ %47 = OpLoad %12 %res None
+ OpReturnValue %47
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %54 = OpLabel
+ %55 = OpFunctionCall %12 %subgroupMatrixLoad_e5381c
+ %56 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %58 = OpAccessChain %_ptr_StorageBuffer_uint %56 %uint_0
+ OpCooperativeMatrixStoreKHR %58 %55 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
index b298a45..c83ff87 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/f364a9.wgsl.expected.spvasm
@@ -1,108 +1,105 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RW {
- arg_0 : array<u32>,
-}
-
-@group(0) @binding(1) var<storage, read_write> sb_rw : SB_RW;
-
-fn subgroupMatrixLoad_f364a9() -> subgroup_matrix_right<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_right<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_right<u8, 8, 8>>(&(sb_rw.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_f364a9(), false, 64);
-}
-
-Failed to generate SPIR-V: :32:47 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>>(ptr<storage, u32, read_write>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %18:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %17, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:30:7 note: in block
- $B3: { # true
- ^^^
-
-:48:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_right<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:44:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RW = struct @align(4), @block {
- arg_0:array<u32> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %sb_rw:ptr<storage, SB_RW, read_write> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_f364a9 = func():subgroup_matrix_right<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32>, read_write> = access %sb_rw, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = spirv.array_length %sb_rw, 0u
- %11:u32 = mul %10, 4u
- %12:u32 = mul %9, 7u
- %13:u32 = add %7, %12
- %14:u32 = add %13, 8u
- %15:bool = lte %14, %11
- %16:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var undef
- if %15 [t: $B3] { # if_1
- $B3: { # true
- %17:ptr<storage, u32, read_write> = access %6, %7
- %18:subgroup_matrix_right<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_right<u8, 8, 8>> %17, 1u, %9, 32u
- store %16, %18
- exit_if # if_1
- }
- }
- %19:subgroup_matrix_right<u8, 8, 8> = load %16
- %res:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %19
- %21:subgroup_matrix_right<u8, 8, 8> = load %res
- ret %21
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %23:subgroup_matrix_right<u8, 8, 8> = call %subgroupMatrixLoad_f364a9
- %24:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %25:ptr<storage, u32, read_write> = access %24, 0u
- %26:void = spirv.cooperative_matrix_store %25, %23, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %28 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RW_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RW_tint_explicit_layout "SB_RW_tint_explicit_layout"
+ OpName %sb_rw "sb_rw"
+ OpName %subgroupMatrixLoad_f364a9 "subgroupMatrixLoad_f364a9"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpDecorate %_runtimearr_uint ArrayStride 4
+ OpMemberDecorate %SB_RW_tint_explicit_layout 0 Offset 0
+ OpDecorate %SB_RW_tint_explicit_layout Block
+ OpDecorate %sb_rw DescriptorSet 0
+ OpDecorate %sb_rw Binding 1
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%_runtimearr_uint = OpTypeRuntimeArray %uint
+%SB_RW_tint_explicit_layout = OpTypeStruct %_runtimearr_uint
+%_ptr_StorageBuffer_SB_RW_tint_explicit_layout = OpTypePointer StorageBuffer %SB_RW_tint_explicit_layout
+ %sb_rw = OpVariable %_ptr_StorageBuffer_SB_RW_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_1 = OpConstant %uint 1
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_1
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
+ %uint_0 = OpConstant %uint 0
+ %uint_4 = OpConstant %uint 4
+ %uint_7 = OpConstant %uint 7
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %40 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %52 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_f364a9 = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %38 = OpVariable %_ptr_Function_12 Function %40
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+ %25 = OpLoad %uint %arg_1 None
+ %26 = OpLoad %uint %arg_3 None
+ %27 = OpExtInst %uint %28 UMax %26 %uint_8
+ %29 = OpArrayLength %uint %sb_rw 0
+ %30 = OpIMul %uint %29 %uint_4
+ %32 = OpIMul %uint %27 %uint_7
+ %34 = OpIAdd %uint %25 %32
+ %35 = OpIAdd %uint %34 %uint_8
+ %36 = OpULessThanEqual %bool %35 %30
+ OpSelectionMerge %42 None
+ OpBranchConditional %36 %43 %42
+ %43 = OpLabel
+ %47 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+ %49 = OpCooperativeMatrixLoadKHR %12 %47 %uint_1 %27 NonPrivatePointer
+ OpStore %38 %49 None
+ OpBranch %42
+ %42 = OpLabel
+ %44 = OpLoad %12 %38 None
+ OpStore %res %44
+ %46 = OpLoad %12 %res None
+ OpReturnValue %46
+ OpFunctionEnd
+%compute_main = OpFunction %void None %52
+ %53 = OpLabel
+ %54 = OpFunctionCall %12 %subgroupMatrixLoad_f364a9
+ %55 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+ %57 = OpAccessChain %_ptr_StorageBuffer_uint %55 %uint_0
+ OpCooperativeMatrixStoreKHR %57 %54 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
index c77819b..01a3ca1 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixLoad/f86f9f.wgsl.expected.spvasm
@@ -1,110 +1,107 @@
-SKIP: FAILED
-
-
-enable chromium_experimental_subgroup_matrix;
-
-@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
-
-struct SB_RO {
- arg_0 : array<u32, 1024>,
-}
-
-@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
-
-fn subgroupMatrixLoad_f86f9f() -> subgroup_matrix_result<u8, 8, 8> {
- var arg_1 = 1u;
- const arg_2 = true;
- var arg_3 = 8u;
- var res : subgroup_matrix_result<u8, 8, 8> = subgroupMatrixLoad<subgroup_matrix_result<u8, 8, 8>>(&(sb_ro.arg_0), arg_1, arg_2, arg_3);
- return res;
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
- subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixLoad_f86f9f(), false, 64);
-}
-
-Failed to generate SPIR-V: :34:48 error: spirv.cooperative_matrix_load: no matching call to 'spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>>(ptr<storage, u32, read>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_load<T ✗ >(ptr<workgroup' or 'storage, S, read' or 'read_write> ✗ , u32 ✓ , u32 ✓ , u32 ✓ ) -> T' where:
- ✗ 'T' is 'subgroup_matrix<K, S, C, R>'
- ✗ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %16:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %15, 1u, %9, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:32:7 note: in block
- $B3: { # true
- ^^^
-
-:50:16 error: spirv.cooperative_matrix_store: no matching call to 'spirv.cooperative_matrix_store(ptr<storage, u32, read_write>, subgroup_matrix_result<u8, 8, 8>, u32, u32, u32)'
-
-1 candidate function:
- • 'spirv.cooperative_matrix_store(ptr<workgroup' or 'storage, S, write' or 'read_write> ✓ , subgroup_matrix<K, S, C, R> ✗ , u32 ✓ , u32 ✓ , u32 ✓ )' where:
- ✓ 'S' is 'f32', 'i32', 'u32' or 'f16'
-
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:46:3 note: in block
- $B4: {
- ^^^
-
-note: # Disassembly
-SB_RO = struct @align(4) {
- arg_0:array<u32, 1024> @offset(0)
-}
-
-prevent_dce_block = struct @align(4), @block {
- inner:array<u32, 1024> @offset(0)
-}
-
-sb_ro_block = struct @align(4), @block {
- inner:SB_RO @offset(0)
-}
-
-$B1: { # root
- %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
- %2:ptr<storage, sb_ro_block, read> = var undef @binding_point(0, 1)
-}
-
-%subgroupMatrixLoad_f86f9f = func():subgroup_matrix_result<u8, 8, 8> {
- $B2: {
- %arg_1:ptr<function, u32, read_write> = var 1u
- %arg_3:ptr<function, u32, read_write> = var 8u
- %6:ptr<storage, array<u32, 1024>, read> = access %2, 0u, 0u
- %7:u32 = load %arg_1
- %8:u32 = load %arg_3
- %9:u32 = max %8, 8u
- %10:u32 = mul %9, 7u
- %11:u32 = add %7, %10
- %12:u32 = add %11, 8u
- %13:bool = lte %12, 4096u
- %14:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var undef
- if %13 [t: $B3] { # if_1
- $B3: { # true
- %15:ptr<storage, u32, read> = access %6, %7
- %16:subgroup_matrix_result<u8, 8, 8> = spirv.cooperative_matrix_load<subgroup_matrix_result<u8, 8, 8>> %15, 1u, %9, 32u
- store %14, %16
- exit_if # if_1
- }
- }
- %17:subgroup_matrix_result<u8, 8, 8> = load %14
- %res:ptr<function, subgroup_matrix_result<u8, 8, 8>, read_write> = var %17
- %19:subgroup_matrix_result<u8, 8, 8> = load %res
- ret %19
- }
-}
-%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
- $B4: {
- %21:subgroup_matrix_result<u8, 8, 8> = call %subgroupMatrixLoad_f86f9f
- %22:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
- %23:ptr<storage, u32, read_write> = access %22, 0u
- %24:void = spirv.cooperative_matrix_store %23, %21, 0u, 64u, 32u
- ret
- }
-}
-
-
-tint executable returned error: exit status 1
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpCapability VulkanMemoryModel
+ OpCapability VulkanMemoryModelDeviceScope
+ OpCapability CooperativeMatrixKHR
+ OpCapability Int8
+ OpExtension "SPV_KHR_vulkan_memory_model"
+ OpExtension "SPV_KHR_cooperative_matrix"
+ %29 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical Vulkan
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpMemberName %prevent_dce_block_tint_explicit_layout 0 "inner"
+ OpName %prevent_dce_block_tint_explicit_layout "prevent_dce_block_tint_explicit_layout"
+ OpMemberName %SB_RO_tint_explicit_layout 0 "arg_0"
+ OpName %SB_RO_tint_explicit_layout "SB_RO_tint_explicit_layout"
+ OpMemberName %sb_ro_block_tint_explicit_layout 0 "inner"
+ OpName %sb_ro_block_tint_explicit_layout "sb_ro_block_tint_explicit_layout"
+ OpName %subgroupMatrixLoad_f86f9f "subgroupMatrixLoad_f86f9f"
+ OpName %arg_1 "arg_1"
+ OpName %arg_3 "arg_3"
+ OpName %res "res"
+ OpName %compute_main "compute_main"
+ OpDecorate %_arr_uint_uint_1024 ArrayStride 4
+ OpMemberDecorate %prevent_dce_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %prevent_dce_block_tint_explicit_layout Block
+ OpDecorate %1 DescriptorSet 0
+ OpDecorate %1 Binding 0
+ OpMemberDecorate %SB_RO_tint_explicit_layout 0 Offset 0
+ OpMemberDecorate %sb_ro_block_tint_explicit_layout 0 Offset 0
+ OpDecorate %sb_ro_block_tint_explicit_layout Block
+ OpDecorate %7 DescriptorSet 0
+ OpDecorate %7 Binding 1
+ OpDecorate %7 NonWritable
+ %uint = OpTypeInt 32 0
+ %uint_1024 = OpConstant %uint 1024
+%_arr_uint_uint_1024 = OpTypeArray %uint %uint_1024
+%prevent_dce_block_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout = OpTypePointer StorageBuffer %prevent_dce_block_tint_explicit_layout
+ %1 = OpVariable %_ptr_StorageBuffer_prevent_dce_block_tint_explicit_layout StorageBuffer
+%SB_RO_tint_explicit_layout = OpTypeStruct %_arr_uint_uint_1024
+%sb_ro_block_tint_explicit_layout = OpTypeStruct %SB_RO_tint_explicit_layout
+%_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout = OpTypePointer StorageBuffer %sb_ro_block_tint_explicit_layout
+ %7 = OpVariable %_ptr_StorageBuffer_sb_ro_block_tint_explicit_layout StorageBuffer
+ %uint_3 = OpConstant %uint 3
+ %uint_8 = OpConstant %uint 8
+ %uchar = OpTypeInt 8 0
+ %uint_2 = OpConstant %uint 2
+ %12 = OpTypeCooperativeMatrixKHR %uchar %uint_3 %uint_8 %uint_8 %uint_2
+ %17 = OpTypeFunction %12
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_1 = OpConstant %uint 1
+%_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+ %uint_0 = OpConstant %uint 0
+ %uint_7 = OpConstant %uint 7
+ %uint_4096 = OpConstant %uint 4096
+ %bool = OpTypeBool
+%_ptr_Function_12 = OpTypePointer Function %12
+ %uchar_0 = OpConstant %uchar 0
+ %39 = OpConstantComposite %12 %uchar_0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %void = OpTypeVoid
+ %51 = OpTypeFunction %void
+%_ptr_StorageBuffer__arr_uint_uint_1024_0 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
+%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
+ %uint_64 = OpConstant %uint 64
+%subgroupMatrixLoad_f86f9f = OpFunction %12 None %17
+ %18 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_uint Function
+ %arg_3 = OpVariable %_ptr_Function_uint Function
+ %37 = OpVariable %_ptr_Function_12 Function %39
+ %res = OpVariable %_ptr_Function_12 Function
+ OpStore %arg_1 %uint_1
+ OpStore %arg_3 %uint_8
+ %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %7 %uint_0 %uint_0
+ %26 = OpLoad %uint %arg_1 None
+ %27 = OpLoad %uint %arg_3 None
+ %28 = OpExtInst %uint %29 UMax %27 %uint_8
+ %30 = OpIMul %uint %28 %uint_7
+ %32 = OpIAdd %uint %26 %30
+ %33 = OpIAdd %uint %32 %uint_8
+ %34 = OpULessThanEqual %bool %33 %uint_4096
+ OpSelectionMerge %41 None
+ OpBranchConditional %34 %42 %41
+ %42 = OpLabel
+ %46 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+ %48 = OpCooperativeMatrixLoadKHR %12 %46 %uint_1 %28 NonPrivatePointer
+ OpStore %37 %48 None
+ OpBranch %41
+ %41 = OpLabel
+ %43 = OpLoad %12 %37 None
+ OpStore %res %43
+ %45 = OpLoad %12 %res None
+ OpReturnValue %45
+ OpFunctionEnd
+%compute_main = OpFunction %void None %51
+ %52 = OpLabel
+ %53 = OpFunctionCall %12 %subgroupMatrixLoad_f86f9f
+ %54 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024_0 %1 %uint_0
+ %56 = OpAccessChain %_ptr_StorageBuffer_uint_0 %54 %uint_0
+ OpCooperativeMatrixStoreKHR %56 %53 %uint_0 %uint_64 NonPrivatePointer
+ OpReturn
+ OpFunctionEnd