Add subgroupBroadcast to intrinsics.def

Bug: tint:2041
Change-Id: I19d153bc67ab2851ee28247f3cf80f8253bb062f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/151580
Reviewed-by: Ben Clayton <bclayton@google.com>
Auto-Submit: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: David Neto <dneto@google.com>
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index de0c81e..639eba7 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -17,6 +17,10 @@
 //                                                                            //
 // This file is used to generate parts of the Tint BuiltinTable, various      //
 // enum definition files, as well as test .wgsl files.                        //
+//                                                                            //
+// After modifying this file, run:                                            //
+//    tools/run gen                                                           //
+// from the Dawn source directory.                                            //
 ////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -910,6 +914,7 @@
 @stage("fragment", "compute") fn atomicCompareExchangeWeak<T: iu32, S: workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T>
 
 @must_use @stage("compute") fn subgroupBallot() -> vec4<u32>
+@must_use @stage("compute") fn subgroupBroadcast<T: fiu32, L: iu32>(value: T, @const sourceLaneIndex: L) -> T
 
 ////////////////////////////////////////////////////////////////////////////////
 // Value constructors                                                         //
diff --git a/src/tint/lang/core/function.cc b/src/tint/lang/core/function.cc
index 1e636b3..afa1150 100644
--- a/src/tint/lang/core/function.cc
+++ b/src/tint/lang/core/function.cc
@@ -371,6 +371,9 @@
     if (name == "subgroupBallot") {
         return Function::kSubgroupBallot;
     }
+    if (name == "subgroupBroadcast") {
+        return Function::kSubgroupBroadcast;
+    }
     if (name == "_tint_materialize") {
         return Function::kTintMaterialize;
     }
@@ -611,6 +614,8 @@
             return "atomicCompareExchangeWeak";
         case Function::kSubgroupBallot:
             return "subgroupBallot";
+        case Function::kSubgroupBroadcast:
+            return "subgroupBroadcast";
         case Function::kTintMaterialize:
             return "_tint_materialize";
     }
@@ -679,7 +684,7 @@
 }
 
 bool IsSubgroupBuiltin(Function f) {
-    return f == Function::kSubgroupBallot;
+    return f == Function::kSubgroupBallot || f == Function::kSubgroupBroadcast;
 }
 
 bool HasSideEffects(Function f) {
diff --git a/src/tint/lang/core/function.cc.tmpl b/src/tint/lang/core/function.cc.tmpl
index 32ed851..e594eb6 100644
--- a/src/tint/lang/core/function.cc.tmpl
+++ b/src/tint/lang/core/function.cc.tmpl
@@ -105,7 +105,7 @@
 }
 
 bool IsSubgroupBuiltin(Function f) {
-    return f == Function::kSubgroupBallot;
+    return f == Function::kSubgroupBallot || f == Function::kSubgroupBroadcast;
 }
 
 bool HasSideEffects(Function f) {
diff --git a/src/tint/lang/core/function.h b/src/tint/lang/core/function.h
index 4347af9..e9b52fa 100644
--- a/src/tint/lang/core/function.h
+++ b/src/tint/lang/core/function.h
@@ -149,6 +149,7 @@
     kAtomicExchange,
     kAtomicCompareExchangeWeak,
     kSubgroupBallot,
+    kSubgroupBroadcast,
     kTintMaterialize,
     kNone,
 };
@@ -287,6 +288,7 @@
     Function::kAtomicExchange,
     Function::kAtomicCompareExchangeWeak,
     Function::kSubgroupBallot,
+    Function::kSubgroupBroadcast,
     Function::kTintMaterialize,
 };
 
@@ -407,6 +409,7 @@
     "atomicExchange",
     "atomicCompareExchangeWeak",
     "subgroupBallot",
+    "subgroupBroadcast",
     "_tint_materialize",
 };
 
diff --git a/src/tint/lang/core/intrinsic/data/data.cc b/src/tint/lang/core/intrinsic/data/data.cc
index d423120..5f92989 100644
--- a/src/tint/lang/core/intrinsic/data/data.cc
+++ b/src/tint/lang/core/intrinsic/data/data.cc
@@ -4141,39 +4141,39 @@
   },
   {
     /* [348] */
-    /* usage */ core::ParameterUsage::kNone,
+    /* usage */ core::ParameterUsage::kValue,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
     /* [349] */
+    /* usage */ core::ParameterUsage::kSourceLaneIndex,
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(21),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+  },
+  {
+    /* [350] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+  },
+  {
+    /* [351] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
   },
   {
-    /* [350] */
+    /* [352] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(82),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
   },
   {
-    /* [351] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
-  },
-  {
-    /* [352] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
-  },
-  {
     /* [353] */
     /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
     /* [354] */
@@ -4184,323 +4184,335 @@
   {
     /* [355] */
     /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(6),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
     /* [356] */
     /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(6),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(3),
-  },
-  {
-    /* [357] */
-    /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
+    /* [357] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(6),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
+  },
+  {
     /* [358] */
     /* usage */ core::ParameterUsage::kNone,
-    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(22),
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(6),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(3),
   },
   {
     /* [359] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
-    /* number_matcher_indices */ NumberMatcherIndicesIndex(3),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
     /* [360] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(22),
+  },
+  {
+    /* [361] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
+    /* number_matcher_indices */ NumberMatcherIndicesIndex(3),
+  },
+  {
+    /* [362] */
     /* usage */ core::ParameterUsage::kXy,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(70),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [361] */
+    /* [363] */
     /* usage */ core::ParameterUsage::kZw,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(70),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [362] */
+    /* [364] */
     /* usage */ core::ParameterUsage::kXyz,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(10),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [363] */
+    /* [365] */
     /* usage */ core::ParameterUsage::kW,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [364] */
+    /* [366] */
     /* usage */ core::ParameterUsage::kX,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(2),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [365] */
+    /* [367] */
     /* usage */ core::ParameterUsage::kZyw,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(10),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [366] */
+    /* [368] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(0),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(0),
   },
   {
-    /* [367] */
+    /* [369] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
   },
   {
-    /* [368] */
+    /* [370] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(15),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [369] */
+    /* [371] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(14),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(1),
   },
   {
-    /* [370] */
+    /* [372] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(26),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [371] */
+    /* [373] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(28),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [372] */
+    /* [374] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(30),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(6),
   },
   {
-    /* [373] */
+    /* [375] */
     /* usage */ core::ParameterUsage::kTexture,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(165),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
-    /* [374] */
+    /* [376] */
     /* usage */ core::ParameterUsage::kTexture,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(166),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
-    /* [375] */
+    /* [377] */
     /* usage */ core::ParameterUsage::kTexture,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(167),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
-    /* [376] */
+    /* [378] */
     /* usage */ core::ParameterUsage::kTexture,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(168),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(2),
   },
   {
-    /* [377] */
+    /* [379] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(53),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [378] */
+    /* [380] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(87),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [379] */
+    /* [381] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(76),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [380] */
+    /* [382] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(78),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [381] */
+    /* [383] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(98),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [382] */
+    /* [384] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(104),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [383] */
+    /* [385] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(108),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [384] */
+    /* [386] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(106),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [385] */
+    /* [387] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(110),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [386] */
+    /* [388] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(114),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [387] */
+    /* [389] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(112),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [388] */
+    /* [390] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(116),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [389] */
+    /* [391] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(120),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [390] */
+    /* [392] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(118),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [391] */
+    /* [393] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(122),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [392] */
+    /* [394] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(126),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [393] */
+    /* [395] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(124),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [394] */
+    /* [396] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(128),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [395] */
+    /* [397] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(132),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [396] */
+    /* [398] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(130),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [397] */
+    /* [399] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(134),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [398] */
+    /* [400] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(138),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [399] */
+    /* [401] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(136),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [400] */
+    /* [402] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(140),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [401] */
+    /* [403] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(144),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [402] */
+    /* [404] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(142),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [403] */
+    /* [405] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(146),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [404] */
+    /* [406] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(150),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [405] */
+    /* [407] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(148),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [406] */
+    /* [408] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(152),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [407] */
+    /* [409] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(156),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
   },
   {
-    /* [408] */
+    /* [410] */
     /* usage */ core::ParameterUsage::kNone,
     /* type_matcher_indices */ TypeMatcherIndicesIndex(154),
     /* number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
@@ -5158,7 +5170,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(6),
-    /* parameters */ ParameterIndex(373),
+    /* parameters */ ParameterIndex(375),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5171,7 +5183,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(6),
-    /* parameters */ ParameterIndex(374),
+    /* parameters */ ParameterIndex(376),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(34),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5184,7 +5196,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(6),
-    /* parameters */ ParameterIndex(375),
+    /* parameters */ ParameterIndex(377),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(34),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5197,7 +5209,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(6),
-    /* parameters */ ParameterIndex(376),
+    /* parameters */ ParameterIndex(378),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(40),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5600,7 +5612,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(27),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(360),
+    /* parameters */ ParameterIndex(362),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(50),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
@@ -5613,7 +5625,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(27),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(362),
+    /* parameters */ ParameterIndex(364),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(50),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
@@ -5626,7 +5638,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(27),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(364),
+    /* parameters */ ParameterIndex(366),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(50),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(102),
@@ -5639,7 +5651,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(381),
+    /* parameters */ ParameterIndex(383),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -5652,7 +5664,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(381),
+    /* parameters */ ParameterIndex(383),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(100),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -5665,7 +5677,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(18),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(381),
+    /* parameters */ ParameterIndex(383),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(72),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -5678,7 +5690,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(20),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(381),
+    /* parameters */ ParameterIndex(383),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(74),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -5691,7 +5703,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(22),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(381),
+    /* parameters */ ParameterIndex(383),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6484,7 +6496,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(380),
+    /* parameters */ ParameterIndex(382),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6497,7 +6509,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(380),
+    /* parameters */ ParameterIndex(382),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(92),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6510,7 +6522,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(18),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(380),
+    /* parameters */ ParameterIndex(382),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(64),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6523,7 +6535,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(20),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(380),
+    /* parameters */ ParameterIndex(382),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(40),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6536,7 +6548,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(22),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(380),
+    /* parameters */ ParameterIndex(382),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(94),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6744,7 +6756,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(379),
+    /* parameters */ ParameterIndex(381),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6757,7 +6769,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(379),
+    /* parameters */ ParameterIndex(381),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(86),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6770,7 +6782,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(18),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(379),
+    /* parameters */ ParameterIndex(381),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6783,7 +6795,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(20),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(379),
+    /* parameters */ ParameterIndex(381),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(34),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6796,7 +6808,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(22),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(379),
+    /* parameters */ ParameterIndex(381),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(88),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -6848,7 +6860,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(24),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(348),
+    /* parameters */ ParameterIndex(350),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(79),
@@ -6861,7 +6873,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(353),
+    /* parameters */ ParameterIndex(355),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(79),
@@ -6874,7 +6886,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(352),
+    /* parameters */ ParameterIndex(354),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(79),
@@ -6887,7 +6899,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(1),
-    /* parameters */ ParameterIndex(354),
+    /* parameters */ ParameterIndex(356),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(80),
@@ -6900,7 +6912,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(1),
-    /* parameters */ ParameterIndex(356),
+    /* parameters */ ParameterIndex(358),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(81),
@@ -6913,7 +6925,7 @@
     /* num_template_numbers */ 3,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(0),
-    /* parameters */ ParameterIndex(358),
+    /* parameters */ ParameterIndex(360),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(20),
     /* const_eval_fn */ ConstEvalFunctionIndex(82),
@@ -7381,7 +7393,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(382),
+    /* parameters */ ParameterIndex(384),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7420,7 +7432,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(383),
+    /* parameters */ ParameterIndex(385),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(106),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7433,7 +7445,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(384),
+    /* parameters */ ParameterIndex(386),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7459,7 +7471,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(385),
+    /* parameters */ ParameterIndex(387),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7498,7 +7510,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(386),
+    /* parameters */ ParameterIndex(388),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(112),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7511,7 +7523,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(387),
+    /* parameters */ ParameterIndex(389),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7537,7 +7549,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(388),
+    /* parameters */ ParameterIndex(390),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7576,7 +7588,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(389),
+    /* parameters */ ParameterIndex(391),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(118),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7589,7 +7601,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(390),
+    /* parameters */ ParameterIndex(392),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7615,7 +7627,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(391),
+    /* parameters */ ParameterIndex(393),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7654,7 +7666,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(392),
+    /* parameters */ ParameterIndex(394),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(124),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7667,7 +7679,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(393),
+    /* parameters */ ParameterIndex(395),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7693,7 +7705,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(394),
+    /* parameters */ ParameterIndex(396),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7732,7 +7744,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(395),
+    /* parameters */ ParameterIndex(397),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(130),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7745,7 +7757,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(396),
+    /* parameters */ ParameterIndex(398),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7771,7 +7783,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(397),
+    /* parameters */ ParameterIndex(399),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7810,7 +7822,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(398),
+    /* parameters */ ParameterIndex(400),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(136),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7823,7 +7835,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(399),
+    /* parameters */ ParameterIndex(401),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7849,7 +7861,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(400),
+    /* parameters */ ParameterIndex(402),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7888,7 +7900,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(401),
+    /* parameters */ ParameterIndex(403),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(142),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7901,7 +7913,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(402),
+    /* parameters */ ParameterIndex(404),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7927,7 +7939,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(403),
+    /* parameters */ ParameterIndex(405),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -7966,7 +7978,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(404),
+    /* parameters */ ParameterIndex(406),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(148),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -7979,7 +7991,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(405),
+    /* parameters */ ParameterIndex(407),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -8005,7 +8017,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(36),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(406),
+    /* parameters */ ParameterIndex(408),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -8044,7 +8056,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(16),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(407),
+    /* parameters */ ParameterIndex(409),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(154),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -8057,7 +8069,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(14),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(408),
+    /* parameters */ ParameterIndex(410),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(156),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -8122,7 +8134,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(6),
-    /* parameters */ ParameterIndex(375),
+    /* parameters */ ParameterIndex(377),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8174,7 +8186,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(24),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(348),
+    /* parameters */ ParameterIndex(350),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(77),
@@ -8187,7 +8199,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(351),
+    /* parameters */ ParameterIndex(353),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(77),
@@ -8239,7 +8251,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(24),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(348),
+    /* parameters */ ParameterIndex(350),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(78),
@@ -8252,7 +8264,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(351),
+    /* parameters */ ParameterIndex(353),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(78),
@@ -8304,7 +8316,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(24),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(348),
+    /* parameters */ ParameterIndex(350),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(83),
@@ -8356,7 +8368,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(24),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(348),
+    /* parameters */ ParameterIndex(350),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(84),
@@ -8564,7 +8576,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(377),
+    /* parameters */ ParameterIndex(379),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(53),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -8642,7 +8654,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
+    /* parameters */ ParameterIndex(370),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -8681,7 +8693,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(378),
+    /* parameters */ ParameterIndex(380),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(87),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
@@ -9240,7 +9252,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
+    /* parameters */ ParameterIndex(370),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9253,7 +9265,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(369),
+    /* parameters */ ParameterIndex(371),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(14),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -9760,7 +9772,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(368),
+    /* parameters */ ParameterIndex(370),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(49),
@@ -9773,7 +9785,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(369),
+    /* parameters */ ParameterIndex(371),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(14),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(49),
@@ -10449,7 +10461,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(29),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(349),
+    /* parameters */ ParameterIndex(351),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(96),
@@ -10475,7 +10487,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(29),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(349),
+    /* parameters */ ParameterIndex(351),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(97),
@@ -10488,7 +10500,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(25),
     /* template_numbers */ TemplateNumberIndex(7),
-    /* parameters */ ParameterIndex(366),
+    /* parameters */ ParameterIndex(368),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -10514,7 +10526,7 @@
     /* num_template_numbers */ 1,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(4),
-    /* parameters */ ParameterIndex(367),
+    /* parameters */ ParameterIndex(369),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(19),
@@ -10592,7 +10604,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
+    /* parameters */ ParameterIndex(372),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(43),
@@ -10605,7 +10617,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
+    /* parameters */ ParameterIndex(372),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(44),
@@ -10618,7 +10630,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(370),
+    /* parameters */ ParameterIndex(372),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(45),
@@ -10631,7 +10643,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(371),
+    /* parameters */ ParameterIndex(373),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(46),
@@ -10644,7 +10656,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(/* invalid */),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(371),
+    /* parameters */ ParameterIndex(373),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(35),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(47),
@@ -10696,7 +10708,7 @@
     /* num_template_numbers */ 2,
     /* template_types */ TemplateTypeIndex(10),
     /* template_numbers */ TemplateNumberIndex(3),
-    /* parameters */ ParameterIndex(351),
+    /* parameters */ ParameterIndex(353),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(66),
@@ -10774,7 +10786,7 @@
     /* num_template_numbers */ 0,
     /* template_types */ TemplateTypeIndex(25),
     /* template_numbers */ TemplateNumberIndex(/* invalid */),
-    /* parameters */ ParameterIndex(372),
+    /* parameters */ ParameterIndex(374),
     /* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
     /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -10846,6 +10858,19 @@
   },
   {
     /* [460] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 2,
+    /* num_template_types */ 2,
+    /* num_template_numbers */ 0,
+    /* template_types */ TemplateTypeIndex(12),
+    /* template_numbers */ TemplateNumberIndex(/* invalid */),
+    /* parameters */ ParameterIndex(348),
+    /* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
+    /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [461] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_template_types */ 1,
@@ -10858,7 +10883,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(73),
   },
   {
-    /* [461] */
+    /* [462] */
     /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_template_types */ 0,
@@ -10871,7 +10896,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(88),
   },
   {
-    /* [462] */
+    /* [463] */
     /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_template_types */ 0,
@@ -10884,7 +10909,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(89),
   },
   {
-    /* [463] */
+    /* [464] */
     /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 1,
     /* num_template_types */ 1,
@@ -11798,10 +11823,16 @@
   },
   {
     /* [115] */
-    /* fn _tint_materialize<T>(T) -> T */
+    /* fn subgroupBroadcast<T : fiu32, L : iu32>(value: T, @const sourceLaneIndex: L) -> T */
     /* num overloads */ 1,
     /* overloads */ OverloadIndex(460),
   },
+  {
+    /* [116] */
+    /* fn _tint_materialize<T>(T) -> T */
+    /* num overloads */ 1,
+    /* overloads */ OverloadIndex(461),
+  },
 };
 
 constexpr IntrinsicInfo kUnaryOperators[] = {
@@ -11913,13 +11944,13 @@
     /* [8] */
     /* op &&(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(461),
+    /* overloads */ OverloadIndex(462),
   },
   {
     /* [9] */
     /* op ||(bool, bool) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(462),
+    /* overloads */ OverloadIndex(463),
   },
   {
     /* [10] */
@@ -12194,7 +12225,7 @@
     /* [17] */
     /* conv packedVec3<T : concrete_scalar>(vec3<T>) -> packedVec3<T> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(463),
+    /* overloads */ OverloadIndex(464),
   },
 };
 
diff --git a/src/tint/lang/core/parameter_usage.cc b/src/tint/lang/core/parameter_usage.cc
index 2a42c49..c5ddc1c 100644
--- a/src/tint/lang/core/parameter_usage.cc
+++ b/src/tint/lang/core/parameter_usage.cc
@@ -51,6 +51,8 @@
             return "sample_index";
         case ParameterUsage::kSampler:
             return "sampler";
+        case ParameterUsage::kSourceLaneIndex:
+            return "sourceLaneIndex";
         case ParameterUsage::kTexture:
             return "texture";
         case ParameterUsage::kValue:
diff --git a/src/tint/lang/core/parameter_usage.h b/src/tint/lang/core/parameter_usage.h
index 39e0207..fdf355c 100644
--- a/src/tint/lang/core/parameter_usage.h
+++ b/src/tint/lang/core/parameter_usage.h
@@ -45,6 +45,7 @@
     kOffset,
     kSampleIndex,
     kSampler,
+    kSourceLaneIndex,
     kTexture,
     kValue,
     kW,
diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl
index a9d5718..921bdeb 100644
--- a/test/tint/builtins/gen/gen.wgsl.tmpl
+++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -203,7 +203,7 @@
 {{    end -}}
 
 {{- /* Check and emit chromium_experimental_subgroups */ -}}
-{{-   if (eq "subgroupBallot" $builtin_name)}}
+{{-   if or (eq "subgroupBallot" $builtin_name) (eq "subgroupBroadcast" $builtin_name)}}
 enable chromium_experimental_subgroups;
 {{    end -}}
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl
new file mode 100644
index 0000000..3eff109
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: f32, @const sourceLaneIndex: u32) -> f32
+fn subgroupBroadcast_08beca() {
+  var res: f32 = subgroupBroadcast(1.f, 1u);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.glsl
new file mode 100644
index 0000000..e13703d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_08beca() {
+  var res : f32 = subgroupBroadcast(1.0f, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.msl
new file mode 100644
index 0000000..e959257
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_08beca() {
+  var res : f32 = subgroupBroadcast(1.0f, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.wgsl
new file mode 100644
index 0000000..665982c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_08beca() {
+  var res : f32 = subgroupBroadcast(1.0f, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl
new file mode 100644
index 0000000..08f443e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: i32, @const sourceLaneIndex: u32) -> i32
+fn subgroupBroadcast_1d79c7() {
+  var res: i32 = subgroupBroadcast(1i, 1u);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.glsl
new file mode 100644
index 0000000..ad32a6b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_1d79c7() {
+  var res : i32 = subgroupBroadcast(1i, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.msl
new file mode 100644
index 0000000..bd8e5d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_1d79c7() {
+  var res : i32 = subgroupBroadcast(1i, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.wgsl
new file mode 100644
index 0000000..e350734
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_1d79c7() {
+  var res : i32 = subgroupBroadcast(1i, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl
new file mode 100644
index 0000000..6fec1bf
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: u32, @const sourceLaneIndex: i32) -> u32
+fn subgroupBroadcast_49de94() {
+  var res: u32 = subgroupBroadcast(1u, 1i);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.glsl
new file mode 100644
index 0000000..3d60509
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_49de94() {
+  var res : u32 = subgroupBroadcast(1u, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.msl
new file mode 100644
index 0000000..75e4432
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_49de94() {
+  var res : u32 = subgroupBroadcast(1u, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.wgsl
new file mode 100644
index 0000000..0f89e43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_49de94() {
+  var res : u32 = subgroupBroadcast(1u, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl
new file mode 100644
index 0000000..bd09824
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: f32, @const sourceLaneIndex: i32) -> f32
+fn subgroupBroadcast_867093() {
+  var res: f32 = subgroupBroadcast(1.f, 1i);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.glsl
new file mode 100644
index 0000000..1fdc5ef
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_867093() {
+  var res : f32 = subgroupBroadcast(1.0f, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.msl
new file mode 100644
index 0000000..d12b73b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_867093() {
+  var res : f32 = subgroupBroadcast(1.0f, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.wgsl
new file mode 100644
index 0000000..54a63f6
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_867093() {
+  var res : f32 = subgroupBroadcast(1.0f, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl
new file mode 100644
index 0000000..018e064
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: i32, @const sourceLaneIndex: i32) -> i32
+fn subgroupBroadcast_9ccdca() {
+  var res: i32 = subgroupBroadcast(1i, 1i);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.glsl
new file mode 100644
index 0000000..f4b6e1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_9ccdca() {
+  var res : i32 = subgroupBroadcast(1i, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.msl
new file mode 100644
index 0000000..09f24c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_9ccdca() {
+  var res : i32 = subgroupBroadcast(1i, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.wgsl
new file mode 100644
index 0000000..c41d39f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_9ccdca() {
+  var res : i32 = subgroupBroadcast(1i, 1i);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl
new file mode 100644
index 0000000..64b988e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl
@@ -0,0 +1,37 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: u32, @const sourceLaneIndex: u32) -> u32
+fn subgroupBroadcast_c36fe1() {
+  var res: u32 = subgroupBroadcast(1u, 1u);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.glsl
new file mode 100644
index 0000000..fa525a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.glsl
@@ -0,0 +1,21 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_c36fe1() {
+  var res : u32 = subgroupBroadcast(1u, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
+
+Failed to generate: test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.msl
new file mode 100644
index 0000000..1b1de1d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.msl
@@ -0,0 +1,18 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_c36fe1() {
+  var res : u32 = subgroupBroadcast(1u, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.wgsl
new file mode 100644
index 0000000..a448f05
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+SKIP: FAILED
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_c36fe1() {
+  var res : u32 = subgroupBroadcast(1u, 1u);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl
new file mode 100644
index 0000000..7dfbc17
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: f32, @const sourceLaneIndex: u32) -> f32
+fn subgroupBroadcast_08beca() {
+  var arg_0 = 1.f;
+  const arg_1 = 1u;
+  var res: f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.glsl
new file mode 100644
index 0000000..696d739
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_08beca() {
+  var arg_0 = 1.0f;
+  const arg_1 = 1u;
+  var res : f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.msl
new file mode 100644
index 0000000..3bb9248
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_08beca() {
+  var arg_0 = 1.0f;
+  const arg_1 = 1u;
+  var res : f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_08beca();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl
new file mode 100644
index 0000000..f59a4b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: i32, @const sourceLaneIndex: u32) -> i32
+fn subgroupBroadcast_1d79c7() {
+  var arg_0 = 1i;
+  const arg_1 = 1u;
+  var res: i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.glsl
new file mode 100644
index 0000000..a7d7786
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_1d79c7() {
+  var arg_0 = 1i;
+  const arg_1 = 1u;
+  var res : i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.msl
new file mode 100644
index 0000000..c022db4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_1d79c7() {
+  var arg_0 = 1i;
+  const arg_1 = 1u;
+  var res : i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_1d79c7();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl
new file mode 100644
index 0000000..a5f1175
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: u32, @const sourceLaneIndex: i32) -> u32
+fn subgroupBroadcast_49de94() {
+  var arg_0 = 1u;
+  const arg_1 = 1i;
+  var res: u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.glsl
new file mode 100644
index 0000000..57d45ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_49de94() {
+  var arg_0 = 1u;
+  const arg_1 = 1i;
+  var res : u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.msl
new file mode 100644
index 0000000..ba5e419
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_49de94() {
+  var arg_0 = 1u;
+  const arg_1 = 1i;
+  var res : u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_49de94();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl
new file mode 100644
index 0000000..e6352b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: f32, @const sourceLaneIndex: i32) -> f32
+fn subgroupBroadcast_867093() {
+  var arg_0 = 1.f;
+  const arg_1 = 1i;
+  var res: f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.glsl
new file mode 100644
index 0000000..9649d0b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_867093() {
+  var arg_0 = 1.0f;
+  const arg_1 = 1i;
+  var res : f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.msl
new file mode 100644
index 0000000..650c431
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_867093() {
+  var arg_0 = 1.0f;
+  const arg_1 = 1i;
+  var res : f32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : f32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_867093();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl
new file mode 100644
index 0000000..c0e9958
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: i32, @const sourceLaneIndex: i32) -> i32
+fn subgroupBroadcast_9ccdca() {
+  var arg_0 = 1i;
+  const arg_1 = 1i;
+  var res: i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.glsl
new file mode 100644
index 0000000..a8d2d1e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_9ccdca() {
+  var arg_0 = 1i;
+  const arg_1 = 1i;
+  var res : i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.msl
new file mode 100644
index 0000000..421c573
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_9ccdca() {
+  var arg_0 = 1i;
+  const arg_1 = 1i;
+  var res : i32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_9ccdca();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl
new file mode 100644
index 0000000..017d7e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl
@@ -0,0 +1,39 @@
+// Copyright 2023 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+enable chromium_experimental_subgroups;
+
+// fn subgroupBroadcast(value: u32, @const sourceLaneIndex: u32) -> u32
+fn subgroupBroadcast_c36fe1() {
+  var arg_0 = 1u;
+  const arg_1 = 1u;
+  var res: u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.dxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9f667dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc:2510 internal compiler error: TINT_UNREACHABLE unexpected subgroup builtin type subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.glsl
new file mode 100644
index 0000000..9a7ae8f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.glsl
@@ -0,0 +1,23 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_c36fe1() {
+  var arg_0 = 1u;
+  const arg_1 = 1u;
+  var res : u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
+
+Failed to generate: test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl:25:8 error: GLSL backend does not support extension 'chromium_experimental_subgroups'
+enable chromium_experimental_subgroups;
+       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.msl
new file mode 100644
index 0000000..c4a291c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.msl
@@ -0,0 +1,20 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroups;
+
+fn subgroupBroadcast_c36fe1() {
+  var arg_0 = 1u;
+  const arg_1 = 1u;
+  var res : u32 = subgroupBroadcast(arg_0, arg_1);
+  prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupBroadcast_c36fe1();
+}
+
+Failed to generate: error: Unknown import method: subgroupBroadcast
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.spvasm
new file mode 100644
index 0000000..eed3359
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+/build/dawn/src/tint/lang/spirv/writer/ast_printer/builder.cc:2580 internal compiler error: unknown method subgroupBroadcast
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************