SPIR-V 1.4: Allow scalar condition with vector data Fixed: 422424513 * Add overload for select(bool, vec<N, T>, vec<N, T>) -> vec<N, T> * In SPIR-V 1.4 or later no need to splat a scalar condition for vector operands Change-Id: I592efa4b39456b712b72172b702f846e8c8225c1 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/246374 Reviewed-by: James Price <jrprice@google.com> Commit-Queue: James Price <jrprice@google.com> Auto-Submit: Alan Baker <alanbaker@google.com> Commit-Queue: Alan Baker <alanbaker@google.com>
diff --git a/src/tint/lang/spirv/intrinsic/data.cc b/src/tint/lang/spirv/intrinsic/data.cc index 5a7f8cf..6602869 100644 --- a/src/tint/lang/spirv/intrinsic/data.cc +++ b/src/tint/lang/spirv/intrinsic/data.cc
@@ -5639,7 +5639,7 @@ { /* [678] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(914), + /* matcher_indices */ MatcherIndicesIndex(856), }, { /* [679] */ @@ -5659,32 +5659,32 @@ { /* [682] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(929), + /* matcher_indices */ MatcherIndicesIndex(914), }, { /* [683] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(932), + /* matcher_indices */ MatcherIndicesIndex(899), }, { /* [684] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(935), + /* matcher_indices */ MatcherIndicesIndex(899), }, { /* [685] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(814), + /* matcher_indices */ MatcherIndicesIndex(929), }, { /* [686] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(814), + /* matcher_indices */ MatcherIndicesIndex(932), }, { /* [687] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(21), + /* matcher_indices */ MatcherIndicesIndex(935), }, { /* [688] */ @@ -5699,32 +5699,32 @@ { /* [690] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(814), + /* matcher_indices */ MatcherIndicesIndex(21), }, { /* [691] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(875), + /* matcher_indices */ MatcherIndicesIndex(814), }, { /* [692] */ - /* usage */ core::ParameterUsage::kBase, - /* matcher_indices */ MatcherIndicesIndex(21), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(814), }, { /* [693] */ - /* usage */ core::ParameterUsage::kOffset, - /* matcher_indices */ MatcherIndicesIndex(966), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(814), }, { /* [694] */ - /* usage */ core::ParameterUsage::kCount, - /* matcher_indices */ MatcherIndicesIndex(966), + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(875), }, { /* [695] */ /* usage */ core::ParameterUsage::kBase, - /* matcher_indices */ MatcherIndicesIndex(814), + /* matcher_indices */ MatcherIndicesIndex(21), }, { /* [696] */ @@ -5738,296 +5738,311 @@ }, { /* [698] */ + /* usage */ core::ParameterUsage::kBase, + /* matcher_indices */ MatcherIndicesIndex(814), + }, + { + /* [699] */ + /* usage */ core::ParameterUsage::kOffset, + /* matcher_indices */ MatcherIndicesIndex(966), + }, + { + /* [700] */ + /* usage */ core::ParameterUsage::kCount, + /* matcher_indices */ MatcherIndicesIndex(966), + }, + { + /* [701] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(855), }, { - /* [699] */ + /* [702] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(21), }, { - /* [700] */ + /* [703] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(406), }, { - /* [701] */ + /* [704] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [702] */ + /* [705] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(415), }, { - /* [703] */ + /* [706] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [704] */ + /* [707] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(424), }, { - /* [705] */ + /* [708] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [706] */ + /* [709] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(433), }, { - /* [707] */ + /* [710] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [708] */ + /* [711] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(442), }, { - /* [709] */ + /* [712] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [710] */ + /* [713] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(451), }, { - /* [711] */ + /* [714] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(52), }, { - /* [712] */ + /* [715] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(460), }, { - /* [713] */ + /* [716] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(8), }, { - /* [714] */ + /* [717] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(469), }, { - /* [715] */ + /* [718] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(8), }, { - /* [716] */ + /* [719] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(478), }, { - /* [717] */ + /* [720] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(8), }, { - /* [718] */ + /* [721] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(487), }, { - /* [719] */ + /* [722] */ /* usage */ core::ParameterUsage::kLevel, /* matcher_indices */ MatcherIndicesIndex(8), }, { - /* [720] */ + /* [723] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(622), }, { - /* [721] */ + /* [724] */ /* usage */ core::ParameterUsage::kCoords, /* matcher_indices */ MatcherIndicesIndex(956), }, { - /* [722] */ + /* [725] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(871), }, { - /* [723] */ + /* [726] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(875), }, { - /* [724] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(879), - }, - { - /* [725] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(21), - }, - { - /* [726] */ - /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(879), - }, - { /* [727] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(814), + /* matcher_indices */ MatcherIndicesIndex(879), }, { /* [728] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(911), + /* matcher_indices */ MatcherIndicesIndex(21), }, { /* [729] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(820), + /* matcher_indices */ MatcherIndicesIndex(879), }, { /* [730] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(920), + /* matcher_indices */ MatcherIndicesIndex(814), }, { /* [731] */ /* usage */ core::ParameterUsage::kNone, - /* matcher_indices */ MatcherIndicesIndex(923), + /* matcher_indices */ MatcherIndicesIndex(911), }, { /* [732] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(820), + }, + { + /* [733] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(920), + }, + { + /* [734] */ + /* usage */ core::ParameterUsage::kNone, + /* matcher_indices */ MatcherIndicesIndex(923), + }, + { + /* [735] */ /* usage */ core::ParameterUsage::kX, /* matcher_indices */ MatcherIndicesIndex(21), }, { - /* [733] */ + /* [736] */ /* usage */ core::ParameterUsage::kI, /* matcher_indices */ MatcherIndicesIndex(883), }, { - /* [734] */ + /* [737] */ /* usage */ core::ParameterUsage::kX, /* matcher_indices */ MatcherIndicesIndex(814), }, { - /* [735] */ + /* [738] */ /* usage */ core::ParameterUsage::kI, /* matcher_indices */ MatcherIndicesIndex(812), }, { - /* [736] */ + /* [739] */ /* usage */ core::ParameterUsage::kX, /* matcher_indices */ MatcherIndicesIndex(21), }, { - /* [737] */ + /* [740] */ /* usage */ core::ParameterUsage::kI, /* matcher_indices */ MatcherIndicesIndex(887), }, { - /* [738] */ + /* [741] */ /* usage */ core::ParameterUsage::kX, /* matcher_indices */ MatcherIndicesIndex(911), }, { - /* [739] */ + /* [742] */ /* usage */ core::ParameterUsage::kI, /* matcher_indices */ MatcherIndicesIndex(818), }, { - /* [740] */ + /* [743] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(298), }, { - /* [741] */ + /* [744] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(307), }, { - /* [742] */ + /* [745] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(316), }, { - /* [743] */ + /* [746] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(325), }, { - /* [744] */ + /* [747] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(334), }, { - /* [745] */ + /* [748] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(343), }, { - /* [746] */ + /* [749] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(352), }, { - /* [747] */ + /* [750] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(361), }, { - /* [748] */ + /* [751] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(370), }, { - /* [749] */ + /* [752] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(379), }, { - /* [750] */ + /* [753] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(388), }, { - /* [751] */ + /* [754] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(397), }, { - /* [752] */ + /* [755] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(496), }, { - /* [753] */ + /* [756] */ /* usage */ core::ParameterUsage::kImage, /* matcher_indices */ MatcherIndicesIndex(505), }, { - /* [754] */ + /* [757] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(639), }, { - /* [755] */ + /* [758] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(962), }, { - /* [756] */ + /* [759] */ /* usage */ core::ParameterUsage::kNone, /* matcher_indices */ MatcherIndicesIndex(964), }, @@ -8508,7 +8523,7 @@ /* num_explicit_templates */ 0, /* num_templates */ 4, /* templates */ TemplateIndex(57), - /* parameters */ ParameterIndex(720), + /* parameters */ ParameterIndex(723), /* return_matcher_indices */ MatcherIndicesIndex(53), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8651,7 +8666,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(740), + /* parameters */ ParameterIndex(743), /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8662,7 +8677,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(741), + /* parameters */ ParameterIndex(744), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8673,7 +8688,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(742), + /* parameters */ ParameterIndex(745), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8684,7 +8699,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(743), + /* parameters */ ParameterIndex(746), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8695,7 +8710,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(744), + /* parameters */ ParameterIndex(747), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8706,7 +8721,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(49), - /* parameters */ ParameterIndex(745), + /* parameters */ ParameterIndex(748), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8717,7 +8732,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 5, /* templates */ TemplateIndex(16), - /* parameters */ ParameterIndex(746), + /* parameters */ ParameterIndex(749), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8728,7 +8743,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(112), - /* parameters */ ParameterIndex(747), + /* parameters */ ParameterIndex(750), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8739,7 +8754,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(112), - /* parameters */ ParameterIndex(748), + /* parameters */ ParameterIndex(751), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8750,7 +8765,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(112), - /* parameters */ ParameterIndex(749), + /* parameters */ ParameterIndex(752), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8761,7 +8776,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(112), - /* parameters */ ParameterIndex(750), + /* parameters */ ParameterIndex(753), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8772,7 +8787,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(53), - /* parameters */ ParameterIndex(751), + /* parameters */ ParameterIndex(754), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8915,7 +8930,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(700), + /* parameters */ ParameterIndex(703), /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8926,7 +8941,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(702), + /* parameters */ ParameterIndex(705), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8937,7 +8952,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(704), + /* parameters */ ParameterIndex(707), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8948,7 +8963,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(706), + /* parameters */ ParameterIndex(709), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8959,7 +8974,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(708), + /* parameters */ ParameterIndex(711), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8970,7 +8985,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 6, /* templates */ TemplateIndex(10), - /* parameters */ ParameterIndex(710), + /* parameters */ ParameterIndex(713), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8981,7 +8996,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 5, /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(712), + /* parameters */ ParameterIndex(715), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -8992,7 +9007,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 5, /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(714), + /* parameters */ ParameterIndex(717), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -9003,7 +9018,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 5, /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(716), + /* parameters */ ParameterIndex(719), /* return_matcher_indices */ MatcherIndicesIndex(952), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -9014,7 +9029,7 @@ /* num_explicit_templates */ 1, /* num_templates */ 5, /* templates */ TemplateIndex(21), - /* parameters */ ParameterIndex(718), + /* parameters */ ParameterIndex(721), /* return_matcher_indices */ MatcherIndicesIndex(954), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -9395,127 +9410,6 @@ { /* [215] */ /* 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(754), - /* return_matcher_indices */ MatcherIndicesIndex(639), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [216] */ - /* 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(755), - /* return_matcher_indices */ MatcherIndicesIndex(962), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [217] */ - /* 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(756), - /* return_matcher_indices */ MatcherIndicesIndex(964), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [218] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(0), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [219] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(606), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [220] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(302), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [221] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(306), - /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [222] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(302), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [223] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 4, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(306), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [224] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 6, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(0), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [225] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 6, - /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(105), - /* parameters */ ParameterIndex(8), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [226] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 1, @@ -9525,7 +9419,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [227] */ + /* [216] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -9536,7 +9430,139 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { + /* [217] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(47), + /* parameters */ ParameterIndex(682), + /* return_matcher_indices */ MatcherIndicesIndex(899), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [218] */ + /* 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(757), + /* return_matcher_indices */ MatcherIndicesIndex(639), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [219] */ + /* 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(758), + /* return_matcher_indices */ MatcherIndicesIndex(962), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [220] */ + /* 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(759), + /* return_matcher_indices */ MatcherIndicesIndex(964), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [221] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(0), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [222] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(606), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [223] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(302), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [224] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(306), + /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [225] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 4, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(302), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* 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(105), + /* parameters */ ParameterIndex(306), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [227] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 6, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(0), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { /* [228] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 6, + /* num_explicit_templates */ 0, + /* num_templates */ 3, + /* templates */ TemplateIndex(105), + /* parameters */ ParameterIndex(8), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [229] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, @@ -9547,7 +9573,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [229] */ + /* [230] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 0, @@ -9558,7 +9584,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [230] */ + /* [231] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, @@ -9569,41 +9595,41 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [231] */ + /* [232] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(142), - /* parameters */ ParameterIndex(729), + /* parameters */ ParameterIndex(732), /* return_matcher_indices */ MatcherIndicesIndex(911), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [232] */ - /* 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(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { /* [233] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 1, - /* num_templates */ 4, - /* templates */ TemplateIndex(93), - /* parameters */ ParameterIndex(730), - /* return_matcher_indices */ MatcherIndicesIndex(917), + /* num_templates */ 3, + /* templates */ TemplateIndex(26), + /* parameters */ ParameterIndex(14), + /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [234] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 2, + /* num_explicit_templates */ 1, + /* num_templates */ 4, + /* templates */ TemplateIndex(93), + /* parameters */ ParameterIndex(733), + /* return_matcher_indices */ MatcherIndicesIndex(917), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [235] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 1, /* num_templates */ 4, @@ -9613,74 +9639,30 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [235] */ + /* [236] */ /* 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(682), + /* parameters */ ParameterIndex(685), /* return_matcher_indices */ MatcherIndicesIndex(926), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [236] */ - /* 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(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { /* [237] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, - /* num_templates */ 2, - /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(685), - /* return_matcher_indices */ MatcherIndicesIndex(814), + /* num_templates */ 1, + /* templates */ TemplateIndex(31), + /* parameters */ ParameterIndex(4), + /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [238] */ /* 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(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { - /* [239] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 2, - /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(685), - /* return_matcher_indices */ MatcherIndicesIndex(814), - /* 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(21), - /* 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, @@ -9690,8 +9672,52 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { + /* [239] */ + /* 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(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [240] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 2, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(139), + /* parameters */ ParameterIndex(688), + /* return_matcher_indices */ MatcherIndicesIndex(814), + /* 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 */ 1, + /* templates */ TemplateIndex(31), + /* parameters */ ParameterIndex(4), + /* return_matcher_indices */ MatcherIndicesIndex(21), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { /* [242] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 3, + /* num_explicit_templates */ 0, + /* num_templates */ 2, + /* templates */ TemplateIndex(139), + /* parameters */ ParameterIndex(691), + /* return_matcher_indices */ MatcherIndicesIndex(814), + /* 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, @@ -9701,7 +9727,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [243] */ + /* [244] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, @@ -9712,36 +9738,25 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [244] */ + /* [245] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(162), - /* parameters */ ParameterIndex(732), + /* parameters */ ParameterIndex(735), /* return_matcher_indices */ MatcherIndicesIndex(21), /* 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 */ 3, - /* templates */ TemplateIndex(145), - /* parameters */ ParameterIndex(734), - /* return_matcher_indices */ MatcherIndicesIndex(814), - /* 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 */ 3, - /* templates */ TemplateIndex(148), - /* parameters */ ParameterIndex(736), - /* return_matcher_indices */ MatcherIndicesIndex(21), + /* templates */ TemplateIndex(145), + /* parameters */ ParameterIndex(737), + /* return_matcher_indices */ MatcherIndicesIndex(814), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -9749,15 +9764,26 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 4, - /* templates */ TemplateIndex(97), - /* parameters */ ParameterIndex(738), - /* return_matcher_indices */ MatcherIndicesIndex(911), + /* num_templates */ 3, + /* templates */ TemplateIndex(148), + /* parameters */ ParameterIndex(739), + /* return_matcher_indices */ MatcherIndicesIndex(21), /* 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 */ 4, + /* templates */ TemplateIndex(97), + /* parameters */ ParameterIndex(741), + /* return_matcher_indices */ MatcherIndicesIndex(911), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [249] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 4, /* num_explicit_templates */ 0, /* num_templates */ 1, @@ -9767,7 +9793,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [249] */ + /* [250] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -9778,29 +9804,29 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [250] */ + /* [251] */ /* 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(692), + /* parameters */ ParameterIndex(695), /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [251] */ + /* [252] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(143), - /* parameters */ ParameterIndex(695), + /* parameters */ ParameterIndex(698), /* return_matcher_indices */ MatcherIndicesIndex(814), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [252] */ + /* [253] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 1, @@ -9811,18 +9837,18 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [253] */ + /* [254] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 1, /* num_templates */ 4, /* templates */ TemplateIndex(101), - /* parameters */ ParameterIndex(730), + /* parameters */ ParameterIndex(733), /* return_matcher_indices */ MatcherIndicesIndex(917), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [254] */ + /* [255] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, @@ -9833,36 +9859,25 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [255] */ + /* [256] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 3, /* templates */ TemplateIndex(102), - /* parameters */ ParameterIndex(728), + /* parameters */ ParameterIndex(731), /* return_matcher_indices */ MatcherIndicesIndex(941), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [256] */ - /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 1, - /* num_explicit_templates */ 1, - /* num_templates */ 2, - /* templates */ TemplateIndex(151), - /* parameters */ ParameterIndex(1), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), - }, - { /* [257] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, - /* num_templates */ 3, + /* num_templates */ 2, /* templates */ TemplateIndex(151), - /* parameters */ ParameterIndex(729), - /* return_matcher_indices */ MatcherIndicesIndex(911), + /* parameters */ ParameterIndex(1), + /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -9870,6 +9885,17 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, + /* num_templates */ 3, + /* templates */ TemplateIndex(151), + /* parameters */ ParameterIndex(732), + /* return_matcher_indices */ MatcherIndicesIndex(911), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [259] */ + /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), + /* num_parameters */ 1, + /* num_explicit_templates */ 1, /* num_templates */ 2, /* templates */ TemplateIndex(154), /* parameters */ ParameterIndex(1), @@ -9877,18 +9903,18 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [259] */ + /* [260] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(154), - /* parameters */ ParameterIndex(729), + /* parameters */ ParameterIndex(732), /* return_matcher_indices */ MatcherIndicesIndex(911), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [260] */ + /* [261] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, @@ -9899,29 +9925,29 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [261] */ + /* [262] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 1, /* num_explicit_templates */ 1, /* num_templates */ 3, /* templates */ TemplateIndex(157), - /* parameters */ ParameterIndex(729), + /* parameters */ ParameterIndex(732), /* return_matcher_indices */ MatcherIndicesIndex(911), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [262] */ + /* [263] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, /* num_templates */ 2, /* templates */ TemplateIndex(160), - /* parameters */ ParameterIndex(698), + /* parameters */ ParameterIndex(701), /* return_matcher_indices */ MatcherIndicesIndex(43), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [263] */ + /* [264] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 3, /* num_explicit_templates */ 0, @@ -9932,7 +9958,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [264] */ + /* [265] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, @@ -9943,36 +9969,25 @@ /* 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 */ 7, - /* templates */ TemplateIndex(3), - /* parameters */ ParameterIndex(752), - /* return_matcher_indices */ MatcherIndicesIndex(21), - /* 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 */ 7, /* templates */ TemplateIndex(3), - /* parameters */ ParameterIndex(753), + /* parameters */ ParameterIndex(755), /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [267] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 2, - /* num_explicit_templates */ 0, - /* num_templates */ 4, - /* templates */ TemplateIndex(89), - /* parameters */ ParameterIndex(722), - /* return_matcher_indices */ MatcherIndicesIndex(867), + /* num_parameters */ 1, + /* num_explicit_templates */ 1, + /* num_templates */ 7, + /* templates */ TemplateIndex(3), + /* parameters */ ParameterIndex(756), + /* return_matcher_indices */ MatcherIndicesIndex(21), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -9980,10 +9995,10 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 3, - /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(724), - /* return_matcher_indices */ MatcherIndicesIndex(879), + /* num_templates */ 4, + /* templates */ TemplateIndex(89), + /* parameters */ ParameterIndex(725), + /* return_matcher_indices */ MatcherIndicesIndex(867), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -9993,8 +10008,8 @@ /* num_explicit_templates */ 0, /* num_templates */ 3, /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(726), - /* return_matcher_indices */ MatcherIndicesIndex(911), + /* parameters */ ParameterIndex(727), + /* return_matcher_indices */ MatcherIndicesIndex(879), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -10004,7 +10019,7 @@ /* num_explicit_templates */ 0, /* num_templates */ 3, /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(690), + /* parameters */ ParameterIndex(729), /* return_matcher_indices */ MatcherIndicesIndex(911), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, @@ -10013,10 +10028,10 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 2, + /* num_templates */ 3, /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(686), - /* return_matcher_indices */ MatcherIndicesIndex(814), + /* parameters */ ParameterIndex(693), + /* return_matcher_indices */ MatcherIndicesIndex(911), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -10024,21 +10039,21 @@ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 3, + /* num_templates */ 2, /* templates */ TemplateIndex(139), - /* parameters */ ParameterIndex(727), - /* return_matcher_indices */ MatcherIndicesIndex(875), + /* parameters */ ParameterIndex(689), + /* return_matcher_indices */ MatcherIndicesIndex(814), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [273] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* num_parameters */ 3, + /* num_parameters */ 2, /* num_explicit_templates */ 0, - /* num_templates */ 0, - /* templates */ TemplateIndex(/* invalid */), - /* parameters */ ParameterIndex(299), - /* return_matcher_indices */ MatcherIndicesIndex(32), + /* num_templates */ 3, + /* templates */ TemplateIndex(139), + /* parameters */ ParameterIndex(730), + /* return_matcher_indices */ MatcherIndicesIndex(875), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { @@ -10049,11 +10064,22 @@ /* num_templates */ 0, /* templates */ TemplateIndex(/* invalid */), /* parameters */ ParameterIndex(299), - /* return_matcher_indices */ MatcherIndicesIndex(43), + /* return_matcher_indices */ MatcherIndicesIndex(32), /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { /* [275] */ + /* 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(43), + /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), + }, + { + /* [276] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 4, /* num_explicit_templates */ 1, @@ -10064,7 +10090,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [276] */ + /* [277] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline), /* num_parameters */ 5, /* num_explicit_templates */ 0, @@ -10075,7 +10101,7 @@ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */), }, { - /* [277] */ + /* [278] */ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse), /* num_parameters */ 4, /* num_explicit_templates */ 0, @@ -10095,116 +10121,116 @@ /* [0] */ /* fn array_length[I : u32, A : access](ptr<storage, struct_with_runtime_array, A>, I) -> u32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(262), + /* overloads */ OverloadIndex(263), }, { /* [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(218), + /* overloads */ OverloadIndex(221), }, { /* [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(220), + /* overloads */ OverloadIndex(223), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(224), + /* overloads */ OverloadIndex(227), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(222), + /* overloads */ OverloadIndex(225), }, { /* [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(263), + /* overloads */ OverloadIndex(264), }, { /* [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(263), + /* overloads */ OverloadIndex(264), }, { /* [16] */ /* fn dot[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> T */ /* num overloads */ 1, - /* overloads */ OverloadIndex(264), + /* overloads */ OverloadIndex(265), }, { /* [17] */ @@ -10291,13 +10317,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(265), + /* overloads */ OverloadIndex(266), }, { /* [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(266), + /* overloads */ OverloadIndex(267), }, { /* [24] */ @@ -10507,45 +10533,46 @@ /* [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(267), + /* overloads */ OverloadIndex(268), }, { /* [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(268), + /* overloads */ OverloadIndex(269), }, { /* [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(269), + /* overloads */ OverloadIndex(270), }, { /* [36] */ /* fn select[T : scalar](bool, T, T) -> T */ + /* fn select[N : num, T : scalar](bool, vec<N, T>, vec<N, T>) -> vec<N, T> */ /* fn select[N : num, T : scalar](vec<N, bool>, vec<N, T>, vec<N, T>) -> vec<N, T> */ - /* num overloads */ 2, - /* overloads */ OverloadIndex(226), + /* num overloads */ 3, + /* overloads */ OverloadIndex(215), }, { /* [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(270), + /* overloads */ OverloadIndex(271), }, { /* [38] */ /* fn vector_times_scalar[T : f32_f16, N : num](vec<N, T>, T) -> vec<N, T> */ /* num overloads */ 1, - /* overloads */ OverloadIndex(271), + /* overloads */ OverloadIndex(272), }, { /* [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(228), + /* overloads */ OverloadIndex(229), }, { /* [40] */ @@ -10553,379 +10580,379 @@ /* fn inverse[T : f32_f16](mat3x3<T>) -> mat3x3<T> */ /* fn inverse[T : f32_f16](mat4x4<T>) -> mat4x4<T> */ /* num overloads */ 3, - /* overloads */ OverloadIndex(215), + /* overloads */ OverloadIndex(218), }, { /* [41] */ /* 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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(232), + /* overloads */ OverloadIndex(233), }, { /* [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(232), + /* overloads */ OverloadIndex(233), }, { /* [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(234), + /* overloads */ OverloadIndex(235), }, { /* [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(232), + /* overloads */ OverloadIndex(233), }, { /* [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(232), + /* overloads */ OverloadIndex(233), }, { /* [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(234), + /* overloads */ OverloadIndex(235), }, { /* [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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(236), + /* overloads */ OverloadIndex(237), }, { /* [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(238), + /* overloads */ OverloadIndex(239), }, { /* [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(240), + /* overloads */ OverloadIndex(241), }, { /* [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(242), + /* overloads */ OverloadIndex(243), }, { /* [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(244), + /* overloads */ OverloadIndex(245), }, { /* [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(246), + /* overloads */ OverloadIndex(247), }, { /* [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(230), + /* overloads */ OverloadIndex(231), }, { /* [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(248), + /* overloads */ OverloadIndex(249), }, { /* [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(250), + /* overloads */ OverloadIndex(251), }, { /* [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(250), + /* overloads */ OverloadIndex(251), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(256), + /* overloads */ OverloadIndex(257), }, { /* [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(258), + /* overloads */ OverloadIndex(259), }, { /* [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(258), + /* overloads */ OverloadIndex(259), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(254), + /* overloads */ OverloadIndex(255), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(252), + /* overloads */ OverloadIndex(253), }, { /* [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(260), + /* overloads */ OverloadIndex(261), }, { /* [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(260), + /* overloads */ OverloadIndex(261), }, { /* [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(238), + /* overloads */ OverloadIndex(239), }, { /* [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(272), + /* overloads */ OverloadIndex(273), }, { /* [90] */ /* fn s_dot(u32, u32, u32) -> i32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(273), + /* overloads */ OverloadIndex(274), }, { /* [91] */ /* fn u_dot(u32, u32, u32) -> u32 */ /* num overloads */ 1, - /* overloads */ OverloadIndex(274), + /* overloads */ OverloadIndex(275), }, { /* [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(275), + /* overloads */ OverloadIndex(276), }, { /* [93] */ /* fn cooperative_matrix_store[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num](ptr<workgroup_or_storage, S, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32) */ /* num overloads */ 1, - /* overloads */ OverloadIndex(276), + /* overloads */ OverloadIndex(277), }, { /* [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(277), + /* overloads */ OverloadIndex(278), }, };
diff --git a/src/tint/lang/spirv/spirv.def b/src/tint/lang/spirv/spirv.def index 4159981..58c945bf 100644 --- a/src/tint/lang/spirv/spirv.def +++ b/src/tint/lang/spirv/spirv.def
@@ -1511,6 +1511,7 @@ implicit(T: scalar) fn select(bool, T, T) -> T +implicit(N: num, T: scalar) fn select(bool, vec<N, T>, vec<N, T>) -> vec<N, T> implicit(N: num, T: scalar) fn select(vec<N, bool>, vec<N, T>, vec<N, T>) -> vec<N, T> implicit(T: f32_f16, N: num, M: num) fn vector_times_matrix(vec<N, T>, mat<M, N, T>) -> vec<M, T>
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc index 537776f..a30117d 100644 --- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc +++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
@@ -536,17 +536,19 @@ builtin->Args()[0], }; - // If the condition is scalar and the objects are vectors, we need to splat the condition - // into a vector of the same size. - // TODO(jrprice): We don't need to do this if we're targeting SPIR-V 1.4 or newer. - auto* vec = builtin->Result()->Type()->As<core::type::Vector>(); - if (vec && args[0]->Type()->Is<core::type::Scalar>()) { - Vector<core::ir::Value*, 4> elements; - elements.Resize(vec->Width(), args[0]); + if (config.version < SpvVersion::kSpv14) { + // If the condition is scalar and the objects are vectors, we need to splat the + // condition into a vector of the same size. + auto* vec = builtin->Result()->Type()->As<core::type::Vector>(); + if (vec && args[0]->Type()->Is<core::type::Scalar>()) { + Vector<core::ir::Value*, 4> elements; + elements.Resize(vec->Width(), args[0]); - auto* construct = b.Construct(ty.vec(ty.bool_(), vec->Width()), std::move(elements)); - construct->InsertBefore(builtin); - args[0] = construct->Result(); + auto* construct = + b.Construct(ty.vec(ty.bool_(), vec->Width()), std::move(elements)); + construct->InsertBefore(builtin); + args[0] = construct->Result(); + } } // Replace the builtin call with a call to the spirv.select intrinsic.
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.h b/src/tint/lang/spirv/writer/raise/builtin_polyfill.h index 8cf90ae..60ea101 100644 --- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.h +++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.h
@@ -28,6 +28,7 @@ #ifndef SRC_TINT_LANG_SPIRV_WRITER_RAISE_BUILTIN_POLYFILL_H_ #define SRC_TINT_LANG_SPIRV_WRITER_RAISE_BUILTIN_POLYFILL_H_ +#include "src/tint/lang/spirv/writer/common/options.h" #include "src/tint/utils/result.h" // Forward declarations. @@ -41,6 +42,7 @@ struct PolyfillConfig { bool use_vulkan_memory_model = false; bool scalarize_clamp_builtin = false; + SpvVersion version = SpvVersion::kSpv13; }; /// BuiltinPolyfill is a transform that replaces calls to builtins with polyfills and calls to
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 a67a4c8..591f9e7 100644 --- a/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc +++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill_test.cc
@@ -1376,6 +1376,43 @@ EXPECT_EQ(expect, str()); } +TEST_F(SpirvWriter_BuiltinPolyfillTest, Select_ScalarCondition_VectorOperands_Spv14) { + auto* argf = b.FunctionParam("argf", ty.vec4<i32>()); + auto* argt = b.FunctionParam("argt", ty.vec4<i32>()); + auto* cond = b.FunctionParam("cond", ty.bool_()); + auto* func = b.Function("foo", ty.vec4<i32>()); + func->SetParams({argf, argt, cond}); + + b.Append(func->Block(), [&] { + auto* result = b.Call(ty.vec4<i32>(), core::BuiltinFn::kSelect, argf, argt, cond); + b.Return(func, result); + }); + + auto* src = R"( +%foo = func(%argf:vec4<i32>, %argt:vec4<i32>, %cond:bool):vec4<i32> { + $B1: { + %5:vec4<i32> = select %argf, %argt, %cond + ret %5 + } +} +)"; + EXPECT_EQ(src, str()); + + auto* expect = R"( +%foo = func(%argf:vec4<i32>, %argt:vec4<i32>, %cond:bool):vec4<i32> { + $B1: { + %5:vec4<i32> = spirv.select %cond, %argt, %argf + ret %5 + } +} +)"; + + PolyfillConfig config{.version = SpvVersion::kSpv14}; + Run(BuiltinPolyfill, config); + + EXPECT_EQ(expect, str()); +} + TEST_F(SpirvWriter_BuiltinPolyfillTest, TextureLoad_2D) { auto* t = b.FunctionParam("t", ty.sampled_texture(core::type::TextureDimension::k2d, ty.f32())); auto* coords = b.FunctionParam("coords", ty.vec2<i32>());
diff --git a/src/tint/lang/spirv/writer/raise/raise.cc b/src/tint/lang/spirv/writer/raise/raise.cc index 2ff52ec..c9c6fbd 100644 --- a/src/tint/lang/spirv/writer/raise/raise.cc +++ b/src/tint/lang/spirv/writer/raise/raise.cc
@@ -168,7 +168,8 @@ } raise::PolyfillConfig config = {.use_vulkan_memory_model = options.use_vulkan_memory_model, - .scalarize_clamp_builtin = options.scalarize_clamp_builtin}; + .scalarize_clamp_builtin = options.scalarize_clamp_builtin, + .version = options.spirv_version}; RUN_TRANSFORM(raise::BuiltinPolyfill, module, config); RUN_TRANSFORM(raise::ExpandImplicitSplats, module); // kAllowAnyInputAttachmentIndexType required after ExpandImplicitSplats