[glsl][ir] Polyfill `textureGather`

This Cl replaces the WGSL `textureGather` call with the needed GLSL
polyfill.

Bug: 42251044
Change-Id: I86571731b80a603dcb5f420aaa9a583c6ecf7e47
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/209054
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/fuzz/wgsl/dictionary.txt b/src/tint/cmd/fuzz/wgsl/dictionary.txt
index 770f889..9d185d9 100644
--- a/src/tint/cmd/fuzz/wgsl/dictionary.txt
+++ b/src/tint/cmd/fuzz/wgsl/dictionary.txt
@@ -343,6 +343,7 @@
 "ref"
 "reflect"
 "refract"
+"refz"
 "requires"
 "result"
 "return"
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 078da7f..af75950 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -242,6 +242,7 @@
   location
   num_levels
   original_value
+  refz
   samples
   result
   width
diff --git a/src/tint/lang/core/parameter_usage.cc b/src/tint/lang/core/parameter_usage.cc
index a1ade91..230c624 100644
--- a/src/tint/lang/core/parameter_usage.cc
+++ b/src/tint/lang/core/parameter_usage.cc
@@ -92,6 +92,8 @@
             return "offset";
         case ParameterUsage::kOriginalValue:
             return "original_value";
+        case ParameterUsage::kRefz:
+            return "refz";
         case ParameterUsage::kResult:
             return "result";
         case ParameterUsage::kSampleIndex:
diff --git a/src/tint/lang/core/parameter_usage.h b/src/tint/lang/core/parameter_usage.h
index cdc8d0b..bde9e83 100644
--- a/src/tint/lang/core/parameter_usage.h
+++ b/src/tint/lang/core/parameter_usage.h
@@ -72,6 +72,7 @@
     kNumLevels,
     kOffset,
     kOriginalValue,
+    kRefz,
     kResult,
     kSampleIndex,
     kSampler,
diff --git a/src/tint/lang/glsl/builtin_fn.cc b/src/tint/lang/glsl/builtin_fn.cc
index 5f2f55f..78ba9e0 100644
--- a/src/tint/lang/glsl/builtin_fn.cc
+++ b/src/tint/lang/glsl/builtin_fn.cc
@@ -86,6 +86,10 @@
             return "modf";
         case BuiltinFn::kFrexp:
             return "frexp";
+        case BuiltinFn::kTextureGather:
+            return "textureGather";
+        case BuiltinFn::kTextureGatherOffset:
+            return "textureGatherOffset";
         case BuiltinFn::kTextureSize:
             return "textureSize";
         case BuiltinFn::kImageSize:
diff --git a/src/tint/lang/glsl/builtin_fn.h b/src/tint/lang/glsl/builtin_fn.h
index 83216f5..aa81503 100644
--- a/src/tint/lang/glsl/builtin_fn.h
+++ b/src/tint/lang/glsl/builtin_fn.h
@@ -69,6 +69,8 @@
     kMix,
     kModf,
     kFrexp,
+    kTextureGather,
+    kTextureGatherOffset,
     kTextureSize,
     kImageSize,
     kTexelFetch,
diff --git a/src/tint/lang/glsl/glsl.def b/src/tint/lang/glsl/glsl.def
index c3c1e28..c8cbaab 100644
--- a/src/tint/lang/glsl/glsl.def
+++ b/src/tint/lang/glsl/glsl.def
@@ -187,6 +187,60 @@
 @must_use @const implicit(N: num, T: f32_f16) fn frexp(value: vec<N, T>,
                                                        exp : ptr<function, vec<N, i32>, read_write>) -> vec<N, T>
 
+@must_use implicit(T: fiu32) fn textureGather(
+        texture: texture_2d<T>,
+        coords: vec2<f32>,
+        component: i32) -> vec4<T>
+@must_use implicit(T: fiu32) fn textureGather(
+        texture: texture_2d_array<T>,
+        coords: vec3<f32>,
+        component: i32) -> vec4<T>
+@must_use implicit(T: fiu32) fn textureGather(
+        texture: texture_cube<T>,
+        coords: vec3<f32>,
+        component: i32) -> vec4<T>
+@must_use implicit(T: fiu32) fn textureGather(
+        texture: texture_cube_array<T>,
+        coords: vec4<f32>,
+        component: i32) -> vec4<T>
+@must_use fn textureGather(
+        texture: texture_depth_2d,
+        coords: vec2<f32>,
+        refz: f32) -> vec4<f32>
+@must_use fn textureGather(
+        texture: texture_depth_2d_array,
+        coords: vec3<f32>,
+        refz: f32) -> vec4<f32>
+@must_use fn textureGather(
+        texture: texture_depth_cube,
+        coords: vec3<f32>,
+        refz: f32) -> vec4<f32>
+@must_use fn textureGather(
+        texture: texture_depth_cube_array,
+        coords: vec4<f32>,
+        refz: f32) -> vec4<f32>
+
+@must_use implicit(T: fiu32) fn textureGatherOffset(
+        texture: texture_2d<T>,
+        coords: vec2<f32>,
+        offset: vec2<i32>,
+        component: i32) -> vec4<T>
+@must_use implicit(T: fiu32) fn textureGatherOffset(
+        texture: texture_2d_array<T>,
+        coords: vec3<f32>,
+        offset: vec2<i32>,
+        component: i32) -> vec4<T>
+@must_use fn textureGatherOffset(
+        texture: texture_depth_2d,
+        coords: vec2<f32>,
+        refz: f32,
+        offset: vec2<i32>) -> vec4<f32>
+@must_use fn textureGatherOffset(
+        texture: texture_depth_2d_array,
+        coords: vec3<f32>,
+        refz: f32,
+        offset: vec2<i32>) -> vec4<f32>
+
 @must_use implicit(T: fiu32) fn textureSize(texture: texture_1d<T>,
                                             level: i32) -> i32
 @must_use implicit(T: fiu32) fn textureSize(texture: texture_2d<T>,
diff --git a/src/tint/lang/glsl/intrinsic/data.cc b/src/tint/lang/glsl/intrinsic/data.cc
index 7d2dcac..366834c 100644
--- a/src/tint/lang/glsl/intrinsic/data.cc
+++ b/src/tint/lang/glsl/intrinsic/data.cc
@@ -1074,28 +1074,28 @@
   /* [100] */ MatcherIndex(2),
   /* [101] */ MatcherIndex(9),
   /* [102] */ MatcherIndex(3),
-  /* [103] */ MatcherIndex(14),
+  /* [103] */ MatcherIndex(11),
   /* [104] */ MatcherIndex(0),
-  /* [105] */ MatcherIndex(9),
-  /* [106] */ MatcherIndex(5),
-  /* [107] */ MatcherIndex(15),
+  /* [105] */ MatcherIndex(15),
+  /* [106] */ MatcherIndex(0),
+  /* [107] */ MatcherIndex(16),
   /* [108] */ MatcherIndex(0),
-  /* [109] */ MatcherIndex(10),
-  /* [110] */ MatcherIndex(5),
-  /* [111] */ MatcherIndex(16),
+  /* [109] */ MatcherIndex(18),
+  /* [110] */ MatcherIndex(0),
+  /* [111] */ MatcherIndex(19),
   /* [112] */ MatcherIndex(0),
-  /* [113] */ MatcherIndex(17),
-  /* [114] */ MatcherIndex(0),
-  /* [115] */ MatcherIndex(18),
-  /* [116] */ MatcherIndex(0),
-  /* [117] */ MatcherIndex(19),
+  /* [113] */ MatcherIndex(11),
+  /* [114] */ MatcherIndex(4),
+  /* [115] */ MatcherIndex(9),
+  /* [116] */ MatcherIndex(5),
+  /* [117] */ MatcherIndex(14),
   /* [118] */ MatcherIndex(0),
-  /* [119] */ MatcherIndex(20),
-  /* [120] */ MatcherIndex(0),
-  /* [121] */ MatcherIndex(11),
+  /* [119] */ MatcherIndex(10),
+  /* [120] */ MatcherIndex(5),
+  /* [121] */ MatcherIndex(17),
   /* [122] */ MatcherIndex(0),
-  /* [123] */ MatcherIndex(11),
-  /* [124] */ MatcherIndex(4),
+  /* [123] */ MatcherIndex(20),
+  /* [124] */ MatcherIndex(0),
   /* [125] */ MatcherIndex(11),
   /* [126] */ MatcherIndex(5),
   /* [127] */ MatcherIndex(11),
@@ -1164,571 +1164,741 @@
   },
   {
     /* [8] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(17),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(105),
   },
   {
     /* [9] */
-    /* usage */ core::ParameterUsage::kCompareValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(69),
   },
   {
     /* [10] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(115),
   },
   {
     /* [11] */
-    /* usage */ core::ParameterUsage::kOffset,
+    /* usage */ core::ParameterUsage::kComponent,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [12] */
-    /* usage */ core::ParameterUsage::kBits,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(107),
   },
   {
     /* [13] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(44),
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
     /* [14] */
     /* usage */ core::ParameterUsage::kOffset,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* matcher_indices */ MatcherIndicesIndex(115),
   },
   {
     /* [15] */
-    /* usage */ core::ParameterUsage::kBits,
+    /* usage */ core::ParameterUsage::kComponent,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [16] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [17] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [18] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(5),
-  },
-  {
-    /* [19] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(2),
-  },
-  {
-    /* [20] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(2),
-  },
-  {
-    /* [21] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(47),
-  },
-  {
-    /* [22] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(103),
-  },
-  {
-    /* [23] */
-    /* usage */ core::ParameterUsage::kLocation,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [24] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [25] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(107),
-  },
-  {
-    /* [26] */
-    /* usage */ core::ParameterUsage::kLocation,
-    /* matcher_indices */ MatcherIndicesIndex(105),
-  },
-  {
-    /* [27] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [28] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(111),
-  },
-  {
-    /* [29] */
-    /* usage */ core::ParameterUsage::kLocation,
-    /* matcher_indices */ MatcherIndicesIndex(109),
-  },
-  {
-    /* [30] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [31] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(119),
-  },
-  {
-    /* [32] */
-    /* usage */ core::ParameterUsage::kLocation,
-    /* matcher_indices */ MatcherIndicesIndex(105),
-  },
-  {
-    /* [33] */
-    /* usage */ core::ParameterUsage::kSampleIndex,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [34] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(113),
-  },
-  {
-    /* [35] */
-    /* usage */ core::ParameterUsage::kLocation,
-    /* matcher_indices */ MatcherIndicesIndex(109),
-  },
-  {
-    /* [36] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [37] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(62),
-  },
-  {
-    /* [38] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [39] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(123),
-  },
-  {
-    /* [40] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(65),
-  },
-  {
-    /* [41] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [42] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(125),
-  },
-  {
-    /* [43] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(68),
-  },
-  {
-    /* [44] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [45] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(127),
-  },
-  {
-    /* [46] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(71),
-  },
-  {
-    /* [47] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(129),
-  },
-  {
-    /* [48] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(123),
-  },
-  {
-    /* [49] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(74),
-  },
-  {
-    /* [50] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(129),
-  },
-  {
-    /* [51] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(125),
-  },
-  {
-    /* [52] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(77),
-  },
-  {
-    /* [53] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(129),
-  },
-  {
-    /* [54] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(127),
-  },
-  {
-    /* [55] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(80),
-  },
-  {
-    /* [56] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [57] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(123),
-  },
-  {
-    /* [58] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(83),
-  },
-  {
-    /* [59] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [60] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(125),
-  },
-  {
-    /* [61] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(86),
-  },
-  {
-    /* [62] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [63] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(127),
-  },
-  {
-    /* [64] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(89),
-  },
-  {
-    /* [65] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [66] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(123),
-  },
-  {
-    /* [67] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(92),
-  },
-  {
-    /* [68] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [69] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(125),
-  },
-  {
-    /* [70] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(95),
-  },
-  {
-    /* [71] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(131),
-  },
-  {
-    /* [72] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(127),
-  },
-  {
-    /* [73] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(22),
-  },
-  {
-    /* [74] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [75] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(44),
-  },
-  {
-    /* [76] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(44),
-  },
-  {
-    /* [77] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [78] */
-    /* usage */ core::ParameterUsage::kResult,
-    /* matcher_indices */ MatcherIndicesIndex(27),
-  },
-  {
-    /* [79] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(2),
-  },
-  {
-    /* [80] */
-    /* usage */ core::ParameterUsage::kResult,
-    /* matcher_indices */ MatcherIndicesIndex(0),
-  },
-  {
-    /* [81] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(3),
-  },
-  {
-    /* [82] */
-    /* usage */ core::ParameterUsage::kExp,
-    /* matcher_indices */ MatcherIndicesIndex(31),
-  },
-  {
-    /* [83] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(2),
-  },
-  {
-    /* [84] */
-    /* usage */ core::ParameterUsage::kExp,
-    /* matcher_indices */ MatcherIndicesIndex(6),
-  },
-  {
-    /* [85] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(103),
-  },
-  {
-    /* [86] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [87] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(107),
-  },
-  {
-    /* [88] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [89] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(111),
-  },
-  {
-    /* [90] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [91] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(113),
-  },
-  {
-    /* [92] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [93] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(115),
-  },
-  {
-    /* [94] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [95] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(117),
-  },
-  {
-    /* [96] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [97] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(138),
   },
   {
-    /* [98] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* [17] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(69),
   },
   {
-    /* [99] */
+    /* [18] */
+    /* usage */ core::ParameterUsage::kRefz,
+    /* matcher_indices */ MatcherIndicesIndex(37),
+  },
+  {
+    /* [19] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [20] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(139),
   },
   {
-    /* [100] */
-    /* usage */ core::ParameterUsage::kLevel,
+    /* [21] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [22] */
+    /* usage */ core::ParameterUsage::kRefz,
+    /* matcher_indices */ MatcherIndicesIndex(37),
+  },
+  {
+    /* [23] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [24] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(17),
+  },
+  {
+    /* [25] */
+    /* usage */ core::ParameterUsage::kCompareValue,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [26] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [27] */
+    /* usage */ core::ParameterUsage::kOffset,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [101] */
+    /* [28] */
+    /* usage */ core::ParameterUsage::kBits,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [29] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(44),
+  },
+  {
+    /* [30] */
+    /* usage */ core::ParameterUsage::kOffset,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [31] */
+    /* usage */ core::ParameterUsage::kBits,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [32] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [33] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [34] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(5),
+  },
+  {
+    /* [35] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(2),
+  },
+  {
+    /* [36] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(2),
+  },
+  {
+    /* [37] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(47),
+  },
+  {
+    /* [38] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [39] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(69),
+  },
+  {
+    /* [40] */
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [41] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(107),
+  },
+  {
+    /* [42] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [43] */
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [44] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [45] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(66),
+  },
+  {
+    /* [46] */
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [47] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(111),
+  },
+  {
+    /* [48] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [49] */
+    /* usage */ core::ParameterUsage::kComponent,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [50] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(140),
   },
   {
-    /* [102] */
-    /* usage */ core::ParameterUsage::kLevel,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* [51] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(66),
   },
   {
-    /* [103] */
+    /* [52] */
+    /* usage */ core::ParameterUsage::kRefz,
+    /* matcher_indices */ MatcherIndicesIndex(37),
+  },
+  {
+    /* [53] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
-    /* [104] */
+    /* [54] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [55] */
+    /* usage */ core::ParameterUsage::kRefz,
+    /* matcher_indices */ MatcherIndicesIndex(37),
+  },
+  {
+    /* [56] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(117),
+  },
+  {
+    /* [57] */
+    /* usage */ core::ParameterUsage::kLocation,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [58] */
     /* usage */ core::ParameterUsage::kLevel,
     /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
-    /* [105] */
+    /* [59] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(50),
-  },
-  {
-    /* [106] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(10),
-  },
-  {
-    /* [107] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(53),
-  },
-  {
-    /* [108] */
-    /* usage */ core::ParameterUsage::kCoords,
     /* matcher_indices */ MatcherIndicesIndex(105),
   },
   {
-    /* [109] */
+    /* [60] */
+    /* usage */ core::ParameterUsage::kLocation,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [61] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [62] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(56),
+    /* matcher_indices */ MatcherIndicesIndex(107),
+  },
+  {
+    /* [63] */
+    /* usage */ core::ParameterUsage::kLocation,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [64] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [65] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(123),
+  },
+  {
+    /* [66] */
+    /* usage */ core::ParameterUsage::kLocation,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [67] */
+    /* usage */ core::ParameterUsage::kSampleIndex,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [68] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(121),
+  },
+  {
+    /* [69] */
+    /* usage */ core::ParameterUsage::kLocation,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [70] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [71] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(62),
+  },
+  {
+    /* [72] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [73] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [74] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(65),
+  },
+  {
+    /* [75] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [76] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(125),
+  },
+  {
+    /* [77] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(68),
+  },
+  {
+    /* [78] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [79] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(127),
+  },
+  {
+    /* [80] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(71),
+  },
+  {
+    /* [81] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(129),
+  },
+  {
+    /* [82] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [83] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(74),
+  },
+  {
+    /* [84] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(129),
+  },
+  {
+    /* [85] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(125),
+  },
+  {
+    /* [86] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(77),
+  },
+  {
+    /* [87] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(129),
+  },
+  {
+    /* [88] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(127),
+  },
+  {
+    /* [89] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(80),
+  },
+  {
+    /* [90] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [91] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [92] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(83),
+  },
+  {
+    /* [93] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [94] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(125),
+  },
+  {
+    /* [95] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(86),
+  },
+  {
+    /* [96] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [97] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(127),
+  },
+  {
+    /* [98] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(89),
+  },
+  {
+    /* [99] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [100] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(113),
+  },
+  {
+    /* [101] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(92),
+  },
+  {
+    /* [102] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [103] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(125),
+  },
+  {
+    /* [104] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(95),
+  },
+  {
+    /* [105] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(131),
+  },
+  {
+    /* [106] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(127),
+  },
+  {
+    /* [107] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(22),
+  },
+  {
+    /* [108] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(3),
+  },
+  {
+    /* [109] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(44),
   },
   {
     /* [110] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(109),
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(44),
   },
   {
     /* [111] */
-    /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(59),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [112] */
-    /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(109),
+    /* usage */ core::ParameterUsage::kResult,
+    /* matcher_indices */ MatcherIndicesIndex(27),
   },
   {
     /* [113] */
-    /* usage */ core::ParameterUsage::kNone,
-    /* matcher_indices */ MatcherIndicesIndex(12),
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(2),
   },
   {
     /* [114] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(37),
+    /* usage */ core::ParameterUsage::kResult,
+    /* matcher_indices */ MatcherIndicesIndex(0),
   },
   {
     /* [115] */
     /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(35),
+    /* matcher_indices */ MatcherIndicesIndex(3),
   },
   {
     /* [116] */
-    /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(10),
+    /* usage */ core::ParameterUsage::kExp,
+    /* matcher_indices */ MatcherIndicesIndex(31),
   },
   {
     /* [117] */
     /* usage */ core::ParameterUsage::kValue,
-    /* matcher_indices */ MatcherIndicesIndex(8),
+    /* matcher_indices */ MatcherIndicesIndex(2),
   },
   {
     /* [118] */
+    /* usage */ core::ParameterUsage::kExp,
+    /* matcher_indices */ MatcherIndicesIndex(6),
+  },
+  {
+    /* [119] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(117),
+  },
+  {
+    /* [120] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [121] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(105),
+  },
+  {
+    /* [122] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [123] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(107),
+  },
+  {
+    /* [124] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [125] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(121),
+  },
+  {
+    /* [126] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [127] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(109),
+  },
+  {
+    /* [128] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [129] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(111),
+  },
+  {
+    /* [130] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [131] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(138),
+  },
+  {
+    /* [132] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [133] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(139),
+  },
+  {
+    /* [134] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [135] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(140),
+  },
+  {
+    /* [136] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [137] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(141),
+  },
+  {
+    /* [138] */
+    /* usage */ core::ParameterUsage::kLevel,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [139] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(50),
+  },
+  {
+    /* [140] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [141] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(53),
+  },
+  {
+    /* [142] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(115),
+  },
+  {
+    /* [143] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(56),
+  },
+  {
+    /* [144] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [145] */
+    /* usage */ core::ParameterUsage::kTexture,
+    /* matcher_indices */ MatcherIndicesIndex(59),
+  },
+  {
+    /* [146] */
+    /* usage */ core::ParameterUsage::kCoords,
+    /* matcher_indices */ MatcherIndicesIndex(119),
+  },
+  {
+    /* [147] */
+    /* usage */ core::ParameterUsage::kNone,
+    /* matcher_indices */ MatcherIndicesIndex(12),
+  },
+  {
+    /* [148] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(37),
+  },
+  {
+    /* [149] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(35),
+  },
+  {
+    /* [150] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(10),
+  },
+  {
+    /* [151] */
+    /* usage */ core::ParameterUsage::kValue,
+    /* matcher_indices */ MatcherIndicesIndex(8),
+  },
+  {
+    /* [152] */
     /* usage */ core::ParameterUsage::kValue,
     /* matcher_indices */ MatcherIndicesIndex(1),
   },
   {
-    /* [119] */
+    /* [153] */
     /* usage */ core::ParameterUsage::kValue,
     /* matcher_indices */ MatcherIndicesIndex(38),
   },
   {
-    /* [120] */
+    /* [154] */
     /* usage */ core::ParameterUsage::kValue,
     /* matcher_indices */ MatcherIndicesIndex(101),
   },
   {
-    /* [121] */
+    /* [155] */
     /* usage */ core::ParameterUsage::kTexture,
     /* matcher_indices */ MatcherIndicesIndex(142),
   },
@@ -1909,7 +2079,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(85),
+    /* parameters */ ParameterIndex(119),
     /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -1920,8 +2090,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(87),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(121),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1931,8 +2101,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(89),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* parameters */ ParameterIndex(123),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1942,8 +2112,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(91),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* parameters */ ParameterIndex(125),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1953,8 +2123,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(93),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(127),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1964,8 +2134,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(95),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* parameters */ ParameterIndex(129),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1975,8 +2145,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(97),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(131),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1986,8 +2156,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(99),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* parameters */ ParameterIndex(133),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -1997,8 +2167,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(101),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(135),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2008,8 +2178,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(103),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* parameters */ ParameterIndex(137),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2019,8 +2189,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(31),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(65),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2030,8 +2200,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(121),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* parameters */ ParameterIndex(155),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2041,8 +2211,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(105),
-    /* return_matcher_indices */ MatcherIndicesIndex(123),
+    /* parameters */ ParameterIndex(139),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2052,8 +2222,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(107),
-    /* return_matcher_indices */ MatcherIndicesIndex(123),
+    /* parameters */ ParameterIndex(141),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2063,8 +2233,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(123),
+    /* parameters */ ParameterIndex(143),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2074,8 +2244,8 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(13),
-    /* parameters */ ParameterIndex(111),
-    /* return_matcher_indices */ MatcherIndicesIndex(123),
+    /* parameters */ ParameterIndex(145),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -2085,7 +2255,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(15),
-    /* parameters */ ParameterIndex(105),
+    /* parameters */ ParameterIndex(139),
     /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2096,7 +2266,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(15),
-    /* parameters */ ParameterIndex(107),
+    /* parameters */ ParameterIndex(141),
     /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2107,7 +2277,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(15),
-    /* parameters */ ParameterIndex(109),
+    /* parameters */ ParameterIndex(143),
     /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2118,7 +2288,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(15),
-    /* parameters */ ParameterIndex(111),
+    /* parameters */ ParameterIndex(145),
     /* return_matcher_indices */ MatcherIndicesIndex(125),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2129,7 +2299,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(17),
-    /* parameters */ ParameterIndex(105),
+    /* parameters */ ParameterIndex(139),
     /* return_matcher_indices */ MatcherIndicesIndex(127),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2140,7 +2310,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(17),
-    /* parameters */ ParameterIndex(107),
+    /* parameters */ ParameterIndex(141),
     /* return_matcher_indices */ MatcherIndicesIndex(127),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2151,7 +2321,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(17),
-    /* parameters */ ParameterIndex(109),
+    /* parameters */ ParameterIndex(143),
     /* return_matcher_indices */ MatcherIndicesIndex(127),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2162,7 +2332,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(17),
-    /* parameters */ ParameterIndex(111),
+    /* parameters */ ParameterIndex(145),
     /* return_matcher_indices */ MatcherIndicesIndex(127),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2173,7 +2343,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(37),
+    /* parameters */ ParameterIndex(71),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2184,7 +2354,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(40),
+    /* parameters */ ParameterIndex(74),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2195,7 +2365,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(43),
+    /* parameters */ ParameterIndex(77),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2206,7 +2376,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(46),
+    /* parameters */ ParameterIndex(80),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2217,7 +2387,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(49),
+    /* parameters */ ParameterIndex(83),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2228,7 +2398,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(52),
+    /* parameters */ ParameterIndex(86),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2239,7 +2409,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(55),
+    /* parameters */ ParameterIndex(89),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2250,7 +2420,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(58),
+    /* parameters */ ParameterIndex(92),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2261,7 +2431,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(61),
+    /* parameters */ ParameterIndex(95),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2272,7 +2442,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(64),
+    /* parameters */ ParameterIndex(98),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2283,7 +2453,7 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(67),
+    /* parameters */ ParameterIndex(101),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2294,243 +2464,375 @@
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(70),
+    /* parameters */ ParameterIndex(104),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [36] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(22),
-    /* return_matcher_indices */ MatcherIndicesIndex(121),
+    /* parameters */ ParameterIndex(38),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [37] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(25),
-    /* return_matcher_indices */ MatcherIndicesIndex(121),
+    /* parameters */ ParameterIndex(41),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [38] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(28),
-    /* return_matcher_indices */ MatcherIndicesIndex(121),
+    /* parameters */ ParameterIndex(44),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [39] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(31),
-    /* return_matcher_indices */ MatcherIndicesIndex(121),
+    /* parameters */ ParameterIndex(47),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [40] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(23),
-    /* parameters */ ParameterIndex(34),
-    /* return_matcher_indices */ MatcherIndicesIndex(121),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(16),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [41] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 2,
-    /* templates */ TemplateIndex(11),
-    /* parameters */ ParameterIndex(105),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(20),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [42] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 2,
-    /* templates */ TemplateIndex(11),
-    /* parameters */ ParameterIndex(107),
-    /* return_matcher_indices */ MatcherIndicesIndex(105),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(50),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [43] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 2,
-    /* templates */ TemplateIndex(11),
-    /* parameters */ ParameterIndex(109),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(53),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [44] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
-    /* num_parameters */ 1,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 2,
-    /* templates */ TemplateIndex(11),
-    /* parameters */ ParameterIndex(111),
-    /* return_matcher_indices */ MatcherIndicesIndex(109),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(56),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [45] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(114),
-    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(59),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [46] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(115),
-    /* return_matcher_indices */ MatcherIndicesIndex(8),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(62),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [47] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(114),
-    /* return_matcher_indices */ MatcherIndicesIndex(1),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(65),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [48] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(115),
-    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(68),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [49] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(116),
-    /* return_matcher_indices */ MatcherIndicesIndex(37),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(8),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [50] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(117),
-    /* return_matcher_indices */ MatcherIndicesIndex(35),
+    /* templates */ TemplateIndex(23),
+    /* parameters */ ParameterIndex(12),
+    /* return_matcher_indices */ MatcherIndicesIndex(103),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [51] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(118),
-    /* return_matcher_indices */ MatcherIndicesIndex(37),
+    /* parameters */ ParameterIndex(16),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [52] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* num_parameters */ 1,
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(119),
-    /* return_matcher_indices */ MatcherIndicesIndex(35),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(20),
+    /* return_matcher_indices */ MatcherIndicesIndex(113),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [53] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(2),
-    /* parameters */ ParameterIndex(10),
+    /* num_templates   */ 2,
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(139),
     /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
     /* [54] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 2,
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(141),
+    /* return_matcher_indices */ MatcherIndicesIndex(115),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [55] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 2,
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(143),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [56] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 2,
+    /* templates */ TemplateIndex(11),
+    /* parameters */ ParameterIndex(145),
+    /* return_matcher_indices */ MatcherIndicesIndex(119),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [57] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(148),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [58] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(149),
+    /* return_matcher_indices */ MatcherIndicesIndex(8),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [59] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(148),
+    /* return_matcher_indices */ MatcherIndicesIndex(1),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [60] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(149),
+    /* return_matcher_indices */ MatcherIndicesIndex(38),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [61] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(150),
+    /* return_matcher_indices */ MatcherIndicesIndex(37),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [62] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(151),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [63] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
+    /* parameters */ ParameterIndex(152),
+    /* return_matcher_indices */ MatcherIndicesIndex(37),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [64] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(5),
+    /* parameters */ ParameterIndex(153),
+    /* return_matcher_indices */ MatcherIndicesIndex(35),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [65] */
+    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+    /* num_parameters */ 1,
+    /* num_explicit_templates */ 0,
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(2),
+    /* parameters */ ParameterIndex(26),
+    /* return_matcher_indices */ MatcherIndicesIndex(10),
+    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+  },
+  {
+    /* [66] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(13),
+    /* parameters */ ParameterIndex(29),
     /* return_matcher_indices */ MatcherIndicesIndex(41),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [55] */
+    /* [67] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(2),
-    /* parameters */ ParameterIndex(10),
+    /* parameters */ ParameterIndex(26),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [56] */
+    /* [68] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(4),
-    /* parameters */ ParameterIndex(13),
+    /* parameters */ ParameterIndex(29),
     /* return_matcher_indices */ MatcherIndicesIndex(44),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [57] */
+    /* [69] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -2541,7 +2843,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [58] */
+    /* [70] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -2552,106 +2854,106 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [59] */
+    /* [71] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(7),
-    /* parameters */ ParameterIndex(16),
+    /* parameters */ ParameterIndex(32),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [60] */
+    /* [72] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(7),
-    /* parameters */ ParameterIndex(75),
+    /* parameters */ ParameterIndex(109),
     /* return_matcher_indices */ MatcherIndicesIndex(44),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [61] */
+    /* [73] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(6),
-    /* parameters */ ParameterIndex(16),
+    /* parameters */ ParameterIndex(32),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [62] */
+    /* [74] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(19),
+    /* parameters */ ParameterIndex(35),
     /* return_matcher_indices */ MatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [63] */
+    /* [75] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(9),
-    /* parameters */ ParameterIndex(77),
+    /* parameters */ ParameterIndex(111),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
-    /* [64] */
+    /* [76] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(79),
+    /* parameters */ ParameterIndex(113),
     /* return_matcher_indices */ MatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(0),
   },
   {
-    /* [65] */
+    /* [77] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(9),
-    /* parameters */ ParameterIndex(81),
+    /* parameters */ ParameterIndex(115),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
-    /* [66] */
+    /* [78] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(8),
-    /* parameters */ ParameterIndex(83),
+    /* parameters */ ParameterIndex(117),
     /* return_matcher_indices */ MatcherIndicesIndex(2),
     /* const_eval_fn */ ConstEvalFunctionIndex(1),
   },
   {
-    /* [67] */
+    /* [79] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse, OverloadFlag::kMemberFunction),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(0),
-    /* parameters */ ParameterIndex(113),
+    /* parameters */ ParameterIndex(147),
     /* return_matcher_indices */ MatcherIndicesIndex(10),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [68] */
+    /* [80] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 0,
     /* num_explicit_templates */ 0,
@@ -2662,90 +2964,90 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [69] */
+    /* [81] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(2),
-    /* parameters */ ParameterIndex(8),
+    /* parameters */ ParameterIndex(24),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [70] */
+    /* [82] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(2),
-    /* parameters */ ParameterIndex(73),
+    /* parameters */ ParameterIndex(107),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [71] */
+    /* [83] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(120),
+    /* parameters */ ParameterIndex(154),
     /* return_matcher_indices */ MatcherIndicesIndex(1),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [72] */
+    /* [84] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(118),
+    /* parameters */ ParameterIndex(152),
     /* return_matcher_indices */ MatcherIndicesIndex(101),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [73] */
+    /* [85] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(5),
-    /* parameters */ ParameterIndex(21),
+    /* parameters */ ParameterIndex(37),
     /* return_matcher_indices */ MatcherIndicesIndex(5),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [74] */
+    /* [86] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(9),
-    /* parameters */ ParameterIndex(75),
+    /* parameters */ ParameterIndex(109),
     /* return_matcher_indices */ MatcherIndicesIndex(3),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [75] */
+    /* [87] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(19),
-    /* parameters */ ParameterIndex(75),
+    /* parameters */ ParameterIndex(109),
     /* return_matcher_indices */ MatcherIndicesIndex(98),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [76] */
+    /* [88] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
     /* num_templates   */ 2,
     /* templates */ TemplateIndex(21),
-    /* parameters */ ParameterIndex(75),
+    /* parameters */ ParameterIndex(109),
     /* return_matcher_indices */ MatcherIndicesIndex(98),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
@@ -2759,147 +3061,169 @@
     /* [0] */
     /* fn length[T, A : access](ptr<storage, array<T>, A>) -> i32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(67),
+    /* overloads */ OverloadIndex(79),
   },
   {
     /* [1] */
     /* fn barrier() */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(68),
+    /* overloads */ OverloadIndex(80),
   },
   {
     /* [2] */
     /* fn memoryBarrierBuffer() */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(68),
+    /* overloads */ OverloadIndex(80),
   },
   {
     /* [3] */
     /* fn memoryBarrierImage() */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(68),
+    /* overloads */ OverloadIndex(80),
   },
   {
     /* [4] */
     /* fn atomicCompSwap[T : iu32](ptr<workgroup_or_storage, atomic<T>, read_write>, compare_value: T, value: T) -> T */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(69),
+    /* overloads */ OverloadIndex(81),
   },
   {
     /* [5] */
     /* fn atomicSub[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(70),
+    /* overloads */ OverloadIndex(82),
   },
   {
     /* [6] */
     /* fn floatBitsToInt(value: f32) -> i32 */
     /* fn floatBitsToInt[N : num](value: vec<N, f32>) -> vec<N, i32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(45),
+    /* overloads */ OverloadIndex(57),
   },
   {
     /* [7] */
     /* fn floatBitsToUint(value: f32) -> u32 */
     /* fn floatBitsToUint[N : num](value: vec<N, f32>) -> vec<N, u32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(47),
+    /* overloads */ OverloadIndex(59),
   },
   {
     /* [8] */
     /* fn intBitsToFloat(value: i32) -> f32 */
     /* fn intBitsToFloat[N : num](value: vec<N, i32>) -> vec<N, f32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(49),
+    /* overloads */ OverloadIndex(61),
   },
   {
     /* [9] */
     /* fn uintBitsToFloat(value: u32) -> f32 */
     /* fn uintBitsToFloat[N : num](value: vec<N, u32>) -> vec<N, f32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(51),
+    /* overloads */ OverloadIndex(63),
   },
   {
     /* [10] */
     /* fn bitCount[T : iu32](value: T) -> i32 */
     /* fn bitCount[T : iu32, N : num](value: vec<N, T>) -> vec<N, i32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(53),
+    /* overloads */ OverloadIndex(65),
   },
   {
     /* [11] */
     /* fn bitfieldExtract[T : iu32](value: T, offset: i32, bits: i32) -> T */
     /* fn bitfieldExtract[T : iu32, N : num](value: vec<N, T>, offset: i32, bits: i32) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(55),
+    /* overloads */ OverloadIndex(67),
   },
   {
     /* [12] */
     /* fn bitfieldInsert[T : iu32](base: T, insert: T, offset: i32, bits: i32) -> T */
     /* fn bitfieldInsert[T : iu32, N : num](base: vec<N, T>, insert: vec<N, T>, offset: i32, bits: i32) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(57),
+    /* overloads */ OverloadIndex(69),
   },
   {
     /* [13] */
     /* fn packFloat2x16(value: vec2<f16>) -> u32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(71),
+    /* overloads */ OverloadIndex(83),
   },
   {
     /* [14] */
     /* fn unpackFloat2x16(value: u32) -> vec2<f16> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(72),
+    /* overloads */ OverloadIndex(84),
   },
   {
     /* [15] */
     /* fn abs[T : fi32_f16](T) -> T */
     /* fn abs[T : fi32_f16, N : num](vec<N, T>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(59),
+    /* overloads */ OverloadIndex(71),
   },
   {
     /* [16] */
     /* fn any[N : num](vec<N, bool>) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(73),
+    /* overloads */ OverloadIndex(85),
   },
   {
     /* [17] */
     /* fn all[N : num](vec<N, bool>) -> bool */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(73),
+    /* overloads */ OverloadIndex(85),
   },
   {
     /* [18] */
     /* fn dot[T : f32_f16, N : num](vec<N, T>, vec<N, T>) -> T */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(74),
+    /* overloads */ OverloadIndex(86),
   },
   {
     /* [19] */
     /* fn mix[T : scalar](T, T, bool) -> T */
     /* fn mix[N : num, T : scalar](vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(61),
+    /* overloads */ OverloadIndex(73),
   },
   {
     /* [20] */
     /* fn modf[T : f32_f16](value: T, result: ptr<function, T, read_write>) -> T */
     /* fn modf[N : num, T : f32_f16](value: vec<N, T>, result: ptr<function, vec<N, T>, read_write>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(63),
+    /* overloads */ OverloadIndex(75),
   },
   {
     /* [21] */
     /* fn frexp[T : f32_f16](value: T, exp: ptr<function, i32, read_write>) -> T */
     /* fn frexp[N : num, T : f32_f16](value: vec<N, T>, exp: ptr<function, vec<N, i32>, read_write>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(65),
+    /* overloads */ OverloadIndex(77),
   },
   {
     /* [22] */
+    /* fn textureGather[T : fiu32](texture: texture_2d<T>, coords: vec2<f32>, component: i32) -> vec4<T> */
+    /* fn textureGather[T : fiu32](texture: texture_2d_array<T>, coords: vec3<f32>, component: i32) -> vec4<T> */
+    /* fn textureGather[T : fiu32](texture: texture_cube<T>, coords: vec3<f32>, component: i32) -> vec4<T> */
+    /* fn textureGather[T : fiu32](texture: texture_cube_array<T>, coords: vec4<f32>, component: i32) -> vec4<T> */
+    /* fn textureGather(texture: texture_depth_2d, coords: vec2<f32>, refz: f32) -> vec4<f32> */
+    /* fn textureGather(texture: texture_depth_2d_array, coords: vec3<f32>, refz: f32) -> vec4<f32> */
+    /* fn textureGather(texture: texture_depth_cube, coords: vec3<f32>, refz: f32) -> vec4<f32> */
+    /* fn textureGather(texture: texture_depth_cube_array, coords: vec4<f32>, refz: f32) -> vec4<f32> */
+    /* num overloads */ 8,
+    /* overloads */ OverloadIndex(36),
+  },
+  {
+    /* [23] */
+    /* fn textureGatherOffset[T : fiu32](texture: texture_2d<T>, coords: vec2<f32>, offset: vec2<i32>, component: i32) -> vec4<T> */
+    /* fn textureGatherOffset[T : fiu32](texture: texture_2d_array<T>, coords: vec3<f32>, offset: vec2<i32>, component: i32) -> vec4<T> */
+    /* fn textureGatherOffset(texture: texture_depth_2d, coords: vec2<f32>, refz: f32, offset: vec2<i32>) -> vec4<f32> */
+    /* fn textureGatherOffset(texture: texture_depth_2d_array, coords: vec3<f32>, refz: f32, offset: vec2<i32>) -> vec4<f32> */
+    /* num overloads */ 4,
+    /* overloads */ OverloadIndex(49),
+  },
+  {
+    /* [24] */
     /* fn textureSize[T : fiu32](texture: texture_1d<T>, level: i32) -> i32 */
     /* fn textureSize[T : fiu32](texture: texture_2d<T>, level: i32) -> vec2<i32> */
     /* fn textureSize[T : fiu32](texture: texture_2d_array<T>, level: i32) -> vec3<i32> */
@@ -2916,26 +3240,26 @@
     /* overloads */ OverloadIndex(0),
   },
   {
-    /* [23] */
+    /* [25] */
     /* fn imageSize[F : texel_format, A : access](texture: texture_storage_1d<F, A>) -> i32 */
     /* fn imageSize[F : texel_format, A : access](texture: texture_storage_2d<F, A>) -> vec2<i32> */
     /* fn imageSize[F : texel_format, A : access](texture: texture_storage_2d_array<F, A>) -> vec3<i32> */
     /* fn imageSize[F : texel_format, A : access](texture: texture_storage_3d<F, A>) -> vec3<i32> */
     /* num overloads */ 4,
-    /* overloads */ OverloadIndex(41),
+    /* overloads */ OverloadIndex(53),
   },
   {
-    /* [24] */
+    /* [26] */
     /* fn texelFetch[T : fiu32](texture: texture_1d<T>, location: i32, level: i32) -> vec4<T> */
     /* fn texelFetch[T : fiu32](texture: texture_2d<T>, location: vec2<i32>, level: i32) -> vec4<T> */
     /* fn texelFetch[T : fiu32](texture: texture_2d_array<T>, location: vec3<i32>, level: i32) -> vec4<T> */
     /* fn texelFetch[T : fiu32](texture: texture_multisampled_2d<T>, location: vec2<i32>, sample_index: i32) -> vec4<T> */
     /* fn texelFetch[T : fiu32](texture: texture_3d<T>, location: vec3<i32>, level: i32) -> vec4<T> */
     /* num overloads */ 5,
-    /* overloads */ OverloadIndex(36),
+    /* overloads */ OverloadIndex(44),
   },
   {
-    /* [25] */
+    /* [27] */
     /* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_1d<F, A>, coords: i32) -> vec4<f32> */
     /* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_2d<F, A>, coords: vec2<i32>) -> vec4<f32> */
     /* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_2d_array<F, A>, coords: vec3<i32>) -> vec4<f32> */
@@ -2952,7 +3276,7 @@
     /* overloads */ OverloadIndex(12),
   },
   {
-    /* [26] */
+    /* [28] */
     /* fn imageStore[C : iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
     /* fn imageStore[C : iu32](texture: texture_storage_1d<i32_texel_format, writable>, coords: C, value: vec4<i32>) */
     /* fn imageStore[C : iu32](texture: texture_storage_1d<u32_texel_format, writable>, coords: C, value: vec4<u32>) */
@@ -2969,40 +3293,40 @@
     /* overloads */ OverloadIndex(24),
   },
   {
-    /* [27] */
+    /* [29] */
     /* fn lessThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(75),
-  },
-  {
-    /* [28] */
-    /* fn lessThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
-    /* num overloads */ 1,
-    /* overloads */ OverloadIndex(75),
-  },
-  {
-    /* [29] */
-    /* fn greaterThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
-    /* num overloads */ 1,
-    /* overloads */ OverloadIndex(75),
+    /* overloads */ OverloadIndex(87),
   },
   {
     /* [30] */
-    /* fn greaterThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+    /* fn lessThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(75),
+    /* overloads */ OverloadIndex(87),
   },
   {
     /* [31] */
-    /* fn equal[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+    /* fn greaterThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(76),
+    /* overloads */ OverloadIndex(87),
   },
   {
     /* [32] */
+    /* fn greaterThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+    /* num overloads */ 1,
+    /* overloads */ OverloadIndex(87),
+  },
+  {
+    /* [33] */
+    /* fn equal[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+    /* num overloads */ 1,
+    /* overloads */ OverloadIndex(88),
+  },
+  {
+    /* [34] */
     /* fn notEqual[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(76),
+    /* overloads */ OverloadIndex(88),
   },
 };
 
diff --git a/src/tint/lang/glsl/writer/builtin_test.cc b/src/tint/lang/glsl/writer/builtin_test.cc
index 4e39161..4d6ca69 100644
--- a/src/tint/lang/glsl/writer/builtin_test.cc
+++ b/src/tint/lang/glsl/writer/builtin_test.cc
@@ -1177,10 +1177,10 @@
 precision highp float;
 precision highp int;
 
-uniform highp sampler2D v;
+uniform highp sampler2D t;
 void main() {
-  ivec2 v_1 = ivec2(uvec2(1u, 0u));
-  vec4 x = texelFetch(v, v_1, int(3u));
+  ivec2 v = ivec2(uvec2(1u, 0u));
+  vec4 x = texelFetch(t, v, int(3u));
 }
 )");
 }
@@ -1205,10 +1205,10 @@
     EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
 precision highp int;
 
-uniform highp isampler2D v;
+uniform highp isampler2D t;
 void main() {
-  ivec2 v_1 = ivec2(uvec2(1u, 2u));
-  ivec4 x = texelFetch(v, v_1, int(3u));
+  ivec2 v = ivec2(uvec2(1u, 2u));
+  ivec4 x = texelFetch(t, v, int(3u));
 }
 )");
 }
@@ -1233,10 +1233,10 @@
     EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
 precision highp int;
 
-uniform highp sampler3D v;
+uniform highp sampler3D t;
 void main() {
-  ivec3 v_1 = ivec3(ivec3(1, 2, 3));
-  vec4 x = texelFetch(v, v_1, int(4u));
+  ivec3 v = ivec3(ivec3(1, 2, 3));
+  vec4 x = texelFetch(t, v, int(4u));
 }
 )");
 }
@@ -1261,10 +1261,10 @@
     EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
 precision highp int;
 
-uniform highp isampler2DMS v;
+uniform highp isampler2DMS t;
 void main() {
-  ivec2 v_1 = ivec2(ivec2(1, 2));
-  ivec4 x = texelFetch(v, v_1, int(3));
+  ivec2 v = ivec2(ivec2(1, 2));
+  ivec4 x = texelFetch(t, v, int(3));
 }
 )");
 }
@@ -1726,5 +1726,471 @@
 )");
 }
 
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriterTest, DISABLED_BuiltinTextureGatherCompare_Depth2d) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* depth_ref = b.Value(3_f);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords, depth_ref));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+Texture2D v : register(t0);
+SamplerComparisonState v_1 : register(s1);
+void foo() {
+  float4 x = v.GatherCmp(v_1, float2(1.0f, 2.0f), 3.0f);
+}
+
+)");
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriterTest, DISABLED_BuiltinTextureGatherCompare_Depth2dOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* depth_ref = b.Value(3_f);
+        auto* offset = b.Construct(ty.vec2<i32>(), b.Value(4_i), b.Value(5_i));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     depth_ref, offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+Texture2D v : register(t0);
+SamplerComparisonState v_1 : register(s1);
+void foo() {
+  float2 v_2 = float2(1.0f, 2.0f);
+  float4 x = v.GatherCmp(v_1, v_2, 3.0f, int2(int(4), int(5)));
+}
+
+)");
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriterTest, DISABLED_BuiltinTextureGatherCompare_DepthCubeArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::kCubeArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec3<f32>(), b.Value(1_f), b.Value(2_f), b.Value(2.5_f));
+        auto* array_idx = b.Value(6_u);
+        auto* depth_ref = b.Value(3_f);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     array_idx, depth_ref));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+TextureCubeArray v : register(t0);
+SamplerComparisonState v_1 : register(s1);
+void foo() {
+  float3 v_2 = float3(1.0f, 2.0f, 2.5f);
+  float4 x = v.GatherCmp(v_1, float4(v_2, float(6u)), 3.0f);
+}
+
+)");
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriterTest, DISABLED_BuiltinTextureGatherCompare_Depth2dArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(6_i);
+        auto* depth_ref = b.Value(3_f);
+        auto* offset = b.Construct(ty.vec2<i32>(), b.Value(4_i), b.Value(5_i));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     array_idx, depth_ref, offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+Texture2DArray v : register(t0);
+SamplerComparisonState v_1 : register(s1);
+void foo() {
+  float2 v_2 = float2(1.0f, 2.0f);
+  int2 v_3 = int2(int(4), int(5));
+  float4 x = v.GatherCmp(v_1, float3(v_2, float(int(6))), 3.0f, v_3);
+}
+
+)");
+}
+
+TEST_F(GlslWriterTest, BuiltinTextureGather_Alpha) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2d, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 3_u, t, s, coords));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp isampler2D t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  ivec4 x = textureGather(t_s, v, int(3u));
+}
+)");
+}
+TEST_F(GlslWriterTest, BuiltinTextureGather_RedOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2d, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* offset = b.Composite<vec2<i32>>(1_i, 3_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 0_u, t, s, coords, offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp isampler2D t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  ivec4 x = textureGatherOffset(t_s, v, ivec2(1, 3), int(0u));
+}
+)");
+}
+TEST_F(GlslWriterTest, BuiltinTextureGather_GreenArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2dArray, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(1_u);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 1_u, t, s, coords, array_idx));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp isampler2DArray t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  vec3 v_1 = vec3(v, float(1u));
+  ivec4 x = textureGather(t_s, v_1, int(1u));
+}
+)");
+}
+
+TEST_F(GlslWriterTest, BuiltinTextureGather_BlueArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2dArray, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(1_i);
+        auto* offset = b.Composite<vec2<i32>>(1_i, 2_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 2_u, t, s, coords, array_idx,
+                                     offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp isampler2DArray t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  vec3 v_1 = vec3(v, float(1));
+  ivec4 x = textureGatherOffset(t_s, v_1, ivec2(1, 2), int(2u));
+}
+)");
+}
+
+TEST_F(GlslWriterTest, BuiltinTextureGather_Depth) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp sampler2DShadow t_s;
+void main() {
+  vec4 x = textureGather(t_s, vec2(1.0f, 2.0f), 0.0f);
+}
+)");
+}
+TEST_F(GlslWriterTest, BuiltinTextureGather_DepthOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* offset = b.Composite<vec2<i32>>(3_i, 4_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp sampler2DShadow t_s;
+void main() {
+  vec4 x = textureGatherOffset(t_s, vec2(1.0f, 2.0f), 0.0f, ivec2(3, 4));
+}
+)");
+}
+TEST_F(GlslWriterTest, BuiltinTextureGather_DepthArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(4_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, array_idx));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp sampler2DArrayShadow t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  vec4 x = textureGather(t_s, vec3(v, float(4)), 0.0f);
+}
+)");
+}
+TEST_F(GlslWriterTest, BuiltinTextureGather_DepthArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(4_u);
+        auto* offset = b.Composite<vec2<i32>>(4_i, 5_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, array_idx, offset));
+        b.Return(func);
+    });
+
+    Options opts;
+    opts.disable_robustness = true;
+    ASSERT_TRUE(Generate(opts)) << err_ << output_.glsl;
+    EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float;
+precision highp int;
+
+uniform highp sampler2DArrayShadow t_s;
+void main() {
+  vec2 v = vec2(1.0f, 2.0f);
+  vec4 x = textureGatherOffset(t_s, vec3(v, float(4u)), 0.0f, ivec2(4, 5));
+}
+)");
+}
+
 }  // namespace
 }  // namespace tint::glsl::writer
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill.cc b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
index 953c657..1a67467 100644
--- a/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
@@ -86,8 +86,17 @@
             if (auto* call = inst->As<core::ir::CoreBuiltinCall>()) {
                 switch (call->Func()) {
                     case core::BuiltinFn::kTextureDimensions:
+                    case core::BuiltinFn::kTextureGather:
+                    case core::BuiltinFn::kTextureGatherCompare:
                     case core::BuiltinFn::kTextureLoad:
                     case core::BuiltinFn::kTextureNumLayers:
+                    case core::BuiltinFn::kTextureNumLevels:
+                    case core::BuiltinFn::kTextureSample:
+                    case core::BuiltinFn::kTextureSampleBias:
+                    case core::BuiltinFn::kTextureSampleCompare:
+                    case core::BuiltinFn::kTextureSampleCompareLevel:
+                    case core::BuiltinFn::kTextureSampleGrad:
+                    case core::BuiltinFn::kTextureSampleLevel:
                     case core::BuiltinFn::kTextureStore:
                         call_worklist.Push(call);
                         break;
@@ -104,6 +113,9 @@
                 case core::BuiltinFn::kTextureDimensions:
                     TextureDimensions(call);
                     break;
+                case core::BuiltinFn::kTextureGather:
+                    TextureGather(call);
+                    break;
                 case core::BuiltinFn::kTextureLoad:
                     TextureLoad(call);
                     break;
@@ -113,8 +125,16 @@
                 case core::BuiltinFn::kTextureStore:
                     TextureStore(call);
                     break;
+                case core::BuiltinFn::kTextureGatherCompare:
+                case core::BuiltinFn::kTextureNumLevels:
+                case core::BuiltinFn::kTextureSample:
+                case core::BuiltinFn::kTextureSampleBias:
+                case core::BuiltinFn::kTextureSampleCompare:
+                case core::BuiltinFn::kTextureSampleCompareLevel:
+                case core::BuiltinFn::kTextureSampleGrad:
+                case core::BuiltinFn::kTextureSampleLevel:
                 default:
-                    TINT_UNREACHABLE();
+                    TINT_UNREACHABLE() << "TODO(dsinclair): " << call->Func();
             }
         }
 
@@ -219,8 +239,16 @@
             name = it->second;
         } else {
             name = ir.NameOf(tex).Name();
+            if (name.empty()) {
+                name = "t";
+            }
+
             if (sampler) {
-                name += "_" + ir.NameOf(sampler).Name();
+                auto sampler_name = ir.NameOf(sampler).Name();
+                if (sampler_name.empty()) {
+                    sampler_name = "s";
+                }
+                name += "_" + sampler_name;
             }
             if (name.empty()) {
                 name = "v";
@@ -580,6 +608,70 @@
         });
         call->Destroy();
     }
+
+    void TextureGather(core::ir::BuiltinCall* call) {
+        auto args = call->Args();
+        b.InsertBefore(call, [&] {
+            core::ir::Value* coords = nullptr;
+            Vector<core::ir::Value*, 4> params;
+
+            uint32_t idx = 0;
+            core::ir::Value* component = nullptr;
+            if (!args[idx]->Type()->Is<core::type::Texture>()) {
+                component = args[idx++];
+                TINT_ASSERT(component);
+            }
+
+            uint32_t tex_arg = idx++;
+            uint32_t sampler_arg = idx++;
+
+            auto* tex = GetNewTexture(args[tex_arg], args[sampler_arg]);
+            auto* tex_type = tex->Type()->As<core::type::Texture>();
+            TINT_ASSERT(tex_type);
+
+            bool is_depth = tex_type->Is<core::type::DepthTexture>();
+            params.Push(tex);
+
+            coords = args[idx++];
+
+            switch (tex_type->Dim()) {
+                case core::type::TextureDimension::k2d:
+                    params.Push(coords);
+                    break;
+                case core::type::TextureDimension::k2dArray:
+                    params.Push(b.Construct(ty.vec3<f32>(), coords, b.Convert<f32>(args[idx++]))
+                                    ->Result(0));
+                    break;
+                case core::type::TextureDimension::kCube:
+                    params.Push(coords);
+                    break;
+                case core::type::TextureDimension::kCubeArray:
+                    params.Push(b.Construct(ty.vec4<f32>(), coords, b.Convert<f32>(args[idx++]))
+                                    ->Result(0));
+                    break;
+                default:
+                    TINT_UNREACHABLE();
+            }
+            // Depth gather requires a `refz` param in GLSL.
+            if (is_depth) {
+                params.Push(b.Constant(0.0_f));
+            }
+
+            auto fn = glsl::BuiltinFn::kTextureGather;
+            if (idx < args.Length()) {
+                fn = glsl::BuiltinFn::kTextureGatherOffset;
+                params.Push(args[idx++]);
+            }
+
+            // Push the component onto the end of the list if needed.
+            if (component != nullptr) {
+                params.Push(b.Convert(ty.i32(), component)->Result(0));
+            }
+
+            b.CallWithResult<glsl::ir::BuiltinCall>(call->DetachResult(), fn, params);
+        });
+        call->Destroy();
+    }
 };
 
 }  // namespace
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc b/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
index 1953a0a..7e4bb9d 100644
--- a/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
@@ -1121,5 +1121,921 @@
     EXPECT_EQ(expect, str());
 }
 
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriter_TexturePolyfillTest, DISABLED_TextureGatherCompare_Depth2d) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* depth_ref = b.Value(3_f);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords, depth_ref));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d = load %1
+    %6:sampler_comparison = load %2
+    %7:vec4<f32> = textureGatherCompare %5, %6, %4, 3.0f
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d = load %1
+    %6:sampler_comparison = load %2
+    %7:vec4<f32> = %5.GatherCmp %6, %4, 3.0f
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriter_TexturePolyfillTest, DISABLED_TextureGatherCompare_Depth2dOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* depth_ref = b.Value(3_f);
+        auto* offset = b.Construct(ty.vec2<i32>(), b.Value(4_i), b.Value(5_i));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     depth_ref, offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:vec2<i32> = construct 4i, 5i
+    %6:texture_depth_2d = load %1
+    %7:sampler_comparison = load %2
+    %8:vec4<f32> = textureGatherCompare %6, %7, %4, 3.0f, %5
+    %x:vec4<f32> = let %8
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:vec2<i32> = construct 4i, 5i
+    %6:texture_depth_2d = load %1
+    %7:sampler_comparison = load %2
+    %8:vec4<f32> = %6.GatherCmp %7, %4, 3.0f, %5
+    %x:vec4<f32> = let %8
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriter_TexturePolyfillTest, DISABLED_TextureGatherCompare_DepthCubeArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::kCubeArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec3<f32>(), b.Value(1_f), b.Value(2_f), b.Value(2.5_f));
+        auto* array_idx = b.Value(6_u);
+        auto* depth_ref = b.Value(3_f);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     array_idx, depth_ref));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_cube_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec3<f32> = construct 1.0f, 2.0f, 2.5f
+    %5:texture_depth_cube_array = load %1
+    %6:sampler_comparison = load %2
+    %7:vec4<f32> = textureGatherCompare %5, %6, %4, 6u, 3.0f
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_cube_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec3<f32> = construct 1.0f, 2.0f, 2.5f
+    %5:texture_depth_cube_array = load %1
+    %6:sampler_comparison = load %2
+    %7:f32 = convert 6u
+    %8:vec4<f32> = construct %4, %7
+    %9:vec4<f32> = %5.GatherCmp %6, %8, 3.0f
+    %x:vec4<f32> = let %9
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+// TODO(dsinclair): Add compare
+TEST_F(GlslWriter_TexturePolyfillTest, DISABLED_TextureGatherCompare_Depth2dArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler = b.Var(ty.ptr(
+            handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kComparisonSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(6_i);
+        auto* depth_ref = b.Value(3_f);
+        auto* offset = b.Construct(ty.vec2<i32>(), b.Value(4_i), b.Value(5_i));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGatherCompare, t, s, coords,
+                                     array_idx, depth_ref, offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:vec2<i32> = construct 4i, 5i
+    %6:texture_depth_2d_array = load %1
+    %7:sampler_comparison = load %2
+    %8:vec4<f32> = textureGatherCompare %6, %7, %4, 6i, 3.0f, %5
+    %x:vec4<f32> = let %8
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler_comparison, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:vec2<i32> = construct 4i, 5i
+    %6:texture_depth_2d_array = load %1
+    %7:sampler_comparison = load %2
+    %8:f32 = convert 6i
+    %9:vec3<f32> = construct %4, %8
+    %10:vec4<f32> = %6.GatherCmp %7, %9, 3.0f, %5
+    %x:vec4<f32> = let %10
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_Alpha) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2d, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 3_u, t, s, coords));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_2d<i32>, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_2d<i32> = load %1
+    %6:sampler = load %2
+    %7:vec4<i32> = textureGather 3u, %5, %6, %4
+    %x:vec4<i32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_2d<i32>, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_2d<i32> = load %t_s
+    %5:i32 = convert 3u
+    %6:vec4<i32> = glsl.textureGather %4, %3, %5
+    %x:vec4<i32> = let %6
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_RedOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2d, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* offset = b.Composite<vec2<i32>>(1_i, 3_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 0_u, t, s, coords, offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_2d<i32>, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_2d<i32> = load %1
+    %6:sampler = load %2
+    %7:vec4<i32> = textureGather 0u, %5, %6, %4, vec2<i32>(1i, 3i)
+    %x:vec4<i32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_2d<i32>, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_2d<i32> = load %t_s
+    %5:i32 = convert 0u
+    %6:vec4<i32> = glsl.textureGatherOffset %4, %3, vec2<i32>(1i, 3i), %5
+    %x:vec4<i32> = let %6
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_GreenArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2dArray, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(1_u);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 1_u, t, s, coords, array_idx));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_2d_array<i32> = load %1
+    %6:sampler = load %2
+    %7:vec4<i32> = textureGather 1u, %5, %6, %4, 1u
+    %x:vec4<i32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_2d_array<i32>, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_2d_array<i32> = load %t_s
+    %5:f32 = convert 1u
+    %6:vec3<f32> = construct %3, %5
+    %7:i32 = convert 1u
+    %8:vec4<i32> = glsl.textureGather %4, %6, %7
+    %x:vec4<i32> = let %8
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_BlueArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(handle, ty.Get<core::type::SampledTexture>(
+                                       core::type::TextureDimension::k2dArray, ty.i32())));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(1_i);
+        auto* offset = b.Composite<vec2<i32>>(1_i, 2_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<i32>>(core::BuiltinFn::kTextureGather, 2_u, t, s, coords, array_idx,
+                                     offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_2d_array<i32>, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_2d_array<i32> = load %1
+    %6:sampler = load %2
+    %7:vec4<i32> = textureGather 2u, %5, %6, %4, 1i, vec2<i32>(1i, 2i)
+    %x:vec4<i32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_2d_array<i32>, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_2d_array<i32> = load %t_s
+    %5:f32 = convert 1i
+    %6:vec3<f32> = construct %3, %5
+    %7:i32 = convert 2u
+    %8:vec4<i32> = glsl.textureGatherOffset %4, %6, vec2<i32>(1i, 2i), %7
+    %x:vec4<i32> = let %8
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_Depth) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d = load %1
+    %6:sampler = load %2
+    %7:vec4<f32> = textureGather %5, %6, %4
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_depth_2d, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_depth_2d = load %t_s
+    %5:vec4<f32> = glsl.textureGather %4, %3, 0.0f
+    %x:vec4<f32> = let %5
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_DepthOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(
+            ty.ptr(handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2d)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* offset = b.Composite<vec2<i32>>(3_i, 4_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d = load %1
+    %6:sampler = load %2
+    %7:vec4<f32> = textureGather %5, %6, %4, vec2<i32>(3i, 4i)
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_depth_2d, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_depth_2d = load %t_s
+    %5:vec4<f32> = glsl.textureGatherOffset %4, %3, 0.0f, vec2<i32>(3i, 4i)
+    %x:vec4<f32> = let %5
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_DepthArray) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(4_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x", b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, array_idx));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d_array = load %1
+    %6:sampler = load %2
+    %7:vec4<f32> = textureGather %5, %6, %4, 4i
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_depth_2d_array, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_depth_2d_array = load %t_s
+    %5:f32 = convert 4i
+    %6:vec3<f32> = construct %3, %5
+    %7:vec4<f32> = glsl.textureGather %4, %6, 0.0f
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureGather_DepthArrayOffset) {
+    core::ir::Var* tex = nullptr;
+    core::ir::Var* sampler = nullptr;
+    b.Append(b.ir.root_block, [&] {
+        tex = b.Var(ty.ptr(
+            handle, ty.Get<core::type::DepthTexture>(core::type::TextureDimension::k2dArray)));
+        tex->SetBindingPoint(0, 0);
+
+        sampler =
+            b.Var(ty.ptr(handle, ty.Get<core::type::Sampler>(core::type::SamplerKind::kSampler)));
+        sampler->SetBindingPoint(0, 1);
+    });
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Construct(ty.vec2<f32>(), b.Value(1_f), b.Value(2_f));
+        auto* array_idx = b.Value(4_u);
+        auto* offset = b.Composite<vec2<i32>>(4_i, 5_i);
+
+        auto* t = b.Load(tex);
+        auto* s = b.Load(sampler);
+        b.Let("x",
+              b.Call<vec4<f32>>(core::BuiltinFn::kTextureGather, t, s, coords, array_idx, offset));
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_depth_2d_array, read> = var @binding_point(0, 0)
+  %2:ptr<handle, sampler, read> = var @binding_point(0, 1)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %4:vec2<f32> = construct 1.0f, 2.0f
+    %5:texture_depth_2d_array = load %1
+    %6:sampler = load %2
+    %7:vec4<f32> = textureGather %5, %6, %4, 4u, vec2<i32>(4i, 5i)
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %t_s:ptr<handle, texture_depth_2d_array, read> = var
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:vec2<f32> = construct 1.0f, 2.0f
+    %4:texture_depth_2d_array = load %t_s
+    %5:f32 = convert 4u
+    %6:vec3<f32> = construct %3, %5
+    %7:vec4<f32> = glsl.textureGatherOffset %4, %6, 0.0f, vec2<i32>(4i, 5i)
+    %x:vec4<f32> = let %7
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    cfg.placeholder_sampler_bind_point = {2, 2};
+
+    binding::CombinedTextureSamplerPair pair;
+    pair.texture = {0, 0};
+    pair.sampler = {2, 2};
+    cfg.sampler_texture_to_name[pair] = "my_tex";
+
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
 }  // namespace
 }  // namespace tint::glsl::writer::raise
diff --git a/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.glsl
index 0bd3a3d..ba13438 100644
--- a/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/0166ec.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_0166ec() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_0166ec();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_0166ec() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_0166ec();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCube arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_0166ec() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_0166ec();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.glsl
index 0bd3a3d..f2d7eab 100644
--- a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_04fa78() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_04fa78();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_04fa78() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_04fa78();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_04fa78() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_04fa78();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.glsl
index 0bd3a3d..fd308a5 100644
--- a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeShadow arg_0_arg_1;
+vec4 textureGather_10c554() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(1.0f), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_10c554();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeShadow arg_0_arg_1;
+vec4 textureGather_10c554() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(1.0f), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_10c554();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_10c554() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(1.0f), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_10c554();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.glsl
index 0bd3a3d..5813509 100644
--- a/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/11b2db.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_11b2db() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_11b2db();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_11b2db() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_11b2db();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCube arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_11b2db() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_11b2db();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.glsl
index 0bd3a3d..677ddb8 100644
--- a/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/17baac.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_17baac() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_17baac();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_17baac() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_17baac();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_17baac() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_17baac();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.glsl
index 0bd3a3d..3e50cf4 100644
--- a/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/1bf0ab.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_1bf0ab() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_1bf0ab();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_1bf0ab() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_1bf0ab();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_1bf0ab() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_1bf0ab();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.glsl
index 0bd3a3d..266d16a 100644
--- a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_1f7f6b() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(1.0f), 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_1f7f6b();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_1f7f6b() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(1.0f), 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_1f7f6b();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_1f7f6b() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec2(1.0f), 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_1f7f6b();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.glsl
index 0bd3a3d..c53dcf8 100644
--- a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_22e930() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_22e930();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_22e930() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_22e930();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_22e930() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_22e930();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.glsl
index 0bd3a3d..c77f9e6 100644
--- a/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/238ec4.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_238ec4() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_238ec4();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_238ec4() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_238ec4();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_238ec4() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_238ec4();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.glsl
index 0bd3a3d..f7be3a5 100644
--- a/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/24b0bd.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_24b0bd() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_24b0bd();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_24b0bd() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_24b0bd();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_24b0bd() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_24b0bd();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.glsl
index 0bd3a3d..7d51cea 100644
--- a/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/269250.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_269250() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_269250();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_269250() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_269250();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_269250() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_269250();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.glsl
index 0bd3a3d..cecd1aa 100644
--- a/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/2a4f40.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_2a4f40() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2a4f40();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_2a4f40() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2a4f40();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_2a4f40() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2a4f40();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.glsl
index 0bd3a3d..fd93e9c 100644
--- a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_2cc066() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2cc066();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_2cc066() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2cc066();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_2cc066() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2cc066();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.glsl
index 0bd3a3d..6a3a585 100644
--- a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_2e0ed5() {
+  vec4 res = textureGather(arg_0_arg_1, vec2(1.0f), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2e0ed5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_2e0ed5() {
+  vec4 res = textureGather(arg_0_arg_1, vec2(1.0f), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2e0ed5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_2e0ed5() {
+  vec4 res = textureGather(arg_0_arg_1, vec2(1.0f), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2e0ed5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.glsl
index 0bd3a3d..f7e90f9 100644
--- a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_32c4e8() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_32c4e8();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_32c4e8() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_32c4e8();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCube arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_32c4e8() {
+  vec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_32c4e8();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.glsl
index 0bd3a3d..10b77d8 100644
--- a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_3b32cc() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_3b32cc();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_3b32cc() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_3b32cc();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCube arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_3b32cc() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_3b32cc();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.glsl
index 0bd3a3d..d383507 100644
--- a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_43025d() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_43025d();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_43025d() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_43025d();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_43025d() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_43025d();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.glsl
index 0bd3a3d..2dd2e40 100644
--- a/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/445793.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_445793() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_445793();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_445793() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_445793();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_445793() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_445793();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.glsl
index 0bd3a3d..e318a99 100644
--- a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_49b07f() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_49b07f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_49b07f() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_49b07f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_49b07f() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_49b07f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.glsl
index 0bd3a3d..8ffc7d8 100644
--- a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_4b8103() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_4b8103();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_4b8103() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_4b8103();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_4b8103() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_4b8103();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.glsl
index 0bd3a3d..ca711bb 100644
--- a/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/4e8ac5.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_4e8ac5() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_4e8ac5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_4e8ac5() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_4e8ac5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_4e8ac5() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_4e8ac5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.glsl
index 0bd3a3d..7977788 100644
--- a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_5266da() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5266da();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_5266da() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5266da();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_5266da() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5266da();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.glsl
index 0bd3a3d..cfcec5b 100644
--- a/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/59372a.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_59372a() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_59372a();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_59372a() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_59372a();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_59372a() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_59372a();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.glsl
index 0bd3a3d..5c491b7 100644
--- a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_5ba85f() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5ba85f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_5ba85f() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5ba85f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCube arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_5ba85f() {
+  ivec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5ba85f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.glsl
index 0bd3a3d..fd3c0ca 100644
--- a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_5bd491() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5bd491();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_5bd491() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5bd491();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_5bd491() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5bd491();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.glsl
index 0bd3a3d..e0d34ad 100644
--- a/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/6b7b74.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_6b7b74() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_6b7b74();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_6b7b74() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_6b7b74();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_6b7b74() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_6b7b74();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.glsl
index 0bd3a3d..c29a15b 100644
--- a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_751f8a() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_751f8a();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_751f8a() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_751f8a();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_751f8a() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_751f8a();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.glsl
index 0bd3a3d..56b331b 100644
--- a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_788010() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_788010();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_788010() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_788010();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_788010() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_788010();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.glsl
index 0bd3a3d..2a27f69 100644
--- a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_7c3828() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_7c3828();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_7c3828() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_7c3828();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_7c3828() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_7c3828();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.glsl
index 0bd3a3d..ad107db 100644
--- a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_7dd226() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_7dd226();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_7dd226() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_7dd226();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_7dd226() {
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_7dd226();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.glsl
index 0bd3a3d..27a401b 100644
--- a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_829357() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_829357();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_829357() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_829357();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_829357() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_829357();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.glsl
index 0bd3a3d..7e1c435 100644
--- a/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/831549.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_831549() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_831549();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_831549() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_831549();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_831549() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_831549();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.glsl
index 0bd3a3d..16a2717 100644
--- a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_8578bc() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8578bc();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_8578bc() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8578bc();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_8578bc() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8578bc();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.glsl
index 0bd3a3d..4fb8c9c 100644
--- a/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/89680f.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_89680f() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_89680f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_89680f() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_89680f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCube arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_89680f() {
+  uvec4 res = textureGather(arg_1_arg_2, vec3(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_89680f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.glsl
index 0bd3a3d..f34f304 100644
--- a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_8b754c() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8b754c();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_8b754c() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8b754c();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_8b754c() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8b754c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.glsl
index 0bd3a3d..6726e91 100644
--- a/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/8fae00.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_8fae00() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8fae00();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_8fae00() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8fae00();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_8fae00() {
+  uvec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8fae00();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.glsl
index 0bd3a3d..393e368 100644
--- a/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/92ea47.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_92ea47() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_92ea47();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_92ea47() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_92ea47();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_92ea47() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_92ea47();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.glsl
index 0bd3a3d..c0754f9 100644
--- a/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/986700.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_986700() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_986700();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_986700() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_986700();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_986700() {
+  uvec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_986700();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.glsl
index 0bd3a3d..064d714 100644
--- a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_9a6358() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_9a6358();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_9a6358() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_9a6358();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_9a6358() {
+  vec4 res = textureGather(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_9a6358();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.glsl
index 0bd3a3d..fd7b3d5 100644
--- a/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/9ab41e.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_9ab41e() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_9ab41e();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_9ab41e() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_9ab41e();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_9ab41e() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_9ab41e();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.glsl
index 0bd3a3d..98e6862 100644
--- a/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/a0372b.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_a0372b() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_a0372b();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_a0372b() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_a0372b();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_a0372b() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_a0372b();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.glsl
index 0bd3a3d..b1fc88c 100644
--- a/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/a68027.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_a68027() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_a68027();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_a68027() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_a68027();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_a68027() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1u)), 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_a68027();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.glsl
index 0bd3a3d..018aeb0 100644
--- a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_aaf6bd() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_aaf6bd();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_aaf6bd() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_aaf6bd();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_aaf6bd() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_aaf6bd();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.glsl
index 0bd3a3d..9f1ada3 100644
--- a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_af55b3() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_af55b3();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_af55b3() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_af55b3();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_af55b3() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_af55b3();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.glsl
index 0bd3a3d..eda3818 100644
--- a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_bb3ac5() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_bb3ac5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_bb3ac5() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_bb3ac5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_bb3ac5() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_bb3ac5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.glsl
index 0bd3a3d..d72239c 100644
--- a/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/bd33b6.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_bd33b6() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_bd33b6();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_bd33b6() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_bd33b6();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_bd33b6() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_bd33b6();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.glsl
index 0bd3a3d..b055812 100644
--- a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_be276f() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_be276f();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_be276f() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_be276f();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_be276f() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_be276f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.glsl
index 0bd3a3d..5dbd550 100644
--- a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_c0640c() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_c0640c();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_c0640c() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_c0640c();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_c0640c() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_c0640c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.glsl
index 0bd3a3d..8156008 100644
--- a/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/ccadde.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_ccadde() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ccadde();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_ccadde() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ccadde();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_ccadde() {
+  ivec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ccadde();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.glsl
index 0bd3a3d..af41844 100644
--- a/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/ce5578.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_ce5578() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ce5578();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_ce5578() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ce5578();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_ce5578() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ce5578();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.glsl
index 0bd3a3d..57b8df2 100644
--- a/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/cf9112.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_cf9112() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_cf9112();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_cf9112() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_cf9112();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_cf9112() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_cf9112();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.glsl
index 0bd3a3d..839c199 100644
--- a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_d1f187() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d1f187();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_d1f187() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d1f187();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_d1f187() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d1f187();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.glsl
index 0bd3a3d..8c1413d 100644
--- a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_d4b5c6() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d4b5c6();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_d4b5c6() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d4b5c6();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_d4b5c6() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d4b5c6();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.glsl
index 0bd3a3d..2a1e6a8 100644
--- a/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d6507c.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d6507c() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d6507c();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d6507c() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d6507c();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d6507c() {
+  vec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d6507c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.glsl
index 0bd3a3d..78eb917 100644
--- a/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d8e958.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d8e958() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d8e958();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d8e958() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d8e958();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d8e958() {
+  vec4 res = textureGather(arg_1_arg_2, vec2(1.0f), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d8e958();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.glsl
index 0bd3a3d..61ff77f 100644
--- a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_d90605() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d90605();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_d90605() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d90605();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d90605() {
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(vec2(1.0f), float(1)), 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d90605();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.glsl
index 0bd3a3d..22902f2 100644
--- a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_d98d59() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d98d59();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_d98d59() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d98d59();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d98d59() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d98d59();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.glsl
index 0bd3a3d..b095922 100644
--- a/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/dc6661.wgsl.expected.ir.glsl
@@ -1,11 +1,59 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_dc6661() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_dc6661();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_dc6661() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_dc6661();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_dc6661() {
+  ivec4 res = textureGatherOffset(arg_1_arg_2, vec2(1.0f), ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_dc6661();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.glsl
index 0bd3a3d..3aa5a6c 100644
--- a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_e2acac() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e2acac();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_e2acac() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e2acac();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_e2acac() {
+  vec4 v = vec4(vec3(1.0f), float(1u));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e2acac();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.glsl
index 0bd3a3d..d2ec6bd 100644
--- a/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/e3165f.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_e3165f() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e3165f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_e3165f() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e3165f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_e3165f() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e3165f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.glsl
index 0bd3a3d..14cc209 100644
--- a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_e9d390() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e9d390();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_e9d390() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e9d390();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_e9d390() {
+  vec3 v = vec3(vec2(1.0f), float(1));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e9d390();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.glsl
index 0bd3a3d..5d05120 100644
--- a/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/ea8eb4.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_ea8eb4() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ea8eb4();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_ea8eb4() {
+  vec3 v_1 = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ea8eb4();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_ea8eb4() {
+  vec3 v = vec3(vec2(1.0f), float(1u));
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ea8eb4();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.glsl
index 0bd3a3d..b94b9b1 100644
--- a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_f2c6e3() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_f2c6e3();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_f2c6e3() {
+  vec4 v_1 = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_f2c6e3();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_f2c6e3() {
+  vec4 v = vec4(vec3(1.0f), float(1));
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_f2c6e3();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.glsl
index 0bd3a3d..6d8df35 100644
--- a/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/0166ec.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_0166ec() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_0166ec();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_0166ec() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_0166ec();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCube arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_0166ec() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_0166ec();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.glsl
index 0bd3a3d..83349e2 100644
--- a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_04fa78() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_04fa78();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_04fa78() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_04fa78();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_04fa78() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_04fa78();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.glsl
index 0bd3a3d..151aec0 100644
--- a/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeShadow arg_0_arg_1;
+vec4 textureGather_10c554() {
+  vec3 arg_2 = vec3(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_10c554();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeShadow arg_0_arg_1;
+vec4 textureGather_10c554() {
+  vec3 arg_2 = vec3(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_10c554();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_10c554() {
+  vec3 arg_2 = vec3(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_10c554();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.glsl
index 0bd3a3d..17b052c 100644
--- a/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/11b2db.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_11b2db() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_11b2db();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_11b2db() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_11b2db();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCube arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_11b2db() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_11b2db();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.glsl
index 0bd3a3d..4a12c8f 100644
--- a/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/17baac.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_17baac() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_17baac();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_17baac() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_17baac();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_17baac() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_17baac();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.glsl
index 0bd3a3d..6f61d4f 100644
--- a/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/1bf0ab.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_1bf0ab() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_1bf0ab();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_1bf0ab() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_1bf0ab();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_1bf0ab() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_1bf0ab();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.glsl
index 0bd3a3d..150b7ca 100644
--- a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_1f7f6b() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGatherOffset(arg_0_arg_1, arg_2, 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_1f7f6b();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_1f7f6b() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGatherOffset(arg_0_arg_1, arg_2, 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_1f7f6b();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_1f7f6b() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGatherOffset(arg_0_arg_1, arg_2, 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_1f7f6b();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.glsl
index 0bd3a3d..9f5b6c6 100644
--- a/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_22e930() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_22e930();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_22e930() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_22e930();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_22e930() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_22e930();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.glsl
index 0bd3a3d..2abd000 100644
--- a/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/238ec4.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_238ec4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_238ec4();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_238ec4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_238ec4();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_238ec4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_238ec4();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.glsl
index 0bd3a3d..d39ecbf 100644
--- a/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/24b0bd.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_24b0bd() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_24b0bd();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_24b0bd() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_24b0bd();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_24b0bd() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_24b0bd();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.glsl
index 0bd3a3d..450d21d 100644
--- a/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/269250.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_269250() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_269250();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_269250() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_269250();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_269250() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_269250();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.glsl
index 0bd3a3d..9d50ac7 100644
--- a/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/2a4f40.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_2a4f40() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2a4f40();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_2a4f40() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2a4f40();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_2a4f40() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v, float(arg_3)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2a4f40();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.glsl
index 0bd3a3d..e63751e 100644
--- a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_2cc066() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2cc066();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_2cc066() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2cc066();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_2cc066() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2cc066();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.glsl
index 0bd3a3d..7de08e4a 100644
--- a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.ir.glsl
@@ -1,11 +1,62 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_2e0ed5() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_2e0ed5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DShadow arg_0_arg_1;
+vec4 textureGather_2e0ed5() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_2e0ed5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_2e0ed5() {
+  vec2 arg_2 = vec2(1.0f);
+  vec4 res = textureGather(arg_0_arg_1, arg_2, 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_2e0ed5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.glsl
index 0bd3a3d..31aeb13 100644
--- a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_32c4e8() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_32c4e8();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCube arg_1_arg_2;
+vec4 textureGather_32c4e8() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_32c4e8();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCube arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_32c4e8() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_32c4e8();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.glsl
index 0bd3a3d..c1f0082 100644
--- a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_3b32cc() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_3b32cc();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_3b32cc() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_3b32cc();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCube arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_3b32cc() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_3b32cc();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.glsl
index 0bd3a3d..8aa385d 100644
--- a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_43025d() {
+  vec3 arg_2 = vec3(1.0f);
+  int arg_3 = 1;
+  vec3 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_43025d();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_43025d() {
+  vec3 arg_2 = vec3(1.0f);
+  int arg_3 = 1;
+  vec3 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_43025d();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_43025d() {
+  vec3 arg_2 = vec3(1.0f);
+  int arg_3 = 1;
+  vec3 v = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v, float(arg_3)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_43025d();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.glsl
index 0bd3a3d..7102c64 100644
--- a/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/445793.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_445793() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_445793();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_445793() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_445793();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_445793() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_445793();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.glsl
index 0bd3a3d..f993fc9 100644
--- a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_49b07f() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_49b07f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_49b07f() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_49b07f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_49b07f() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_49b07f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.glsl
index 0bd3a3d..531dad0 100644
--- a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_4b8103() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_4b8103();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_4b8103() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_4b8103();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_4b8103() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_4b8103();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.glsl
index 0bd3a3d..1cb2d50 100644
--- a/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/4e8ac5.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_4e8ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_4e8ac5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_4e8ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_4e8ac5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_4e8ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_4e8ac5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.glsl
index 0bd3a3d..7b0d798 100644
--- a/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_5266da() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5266da();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_5266da() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5266da();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_5266da() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5266da();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.glsl
index 0bd3a3d..5c850fc 100644
--- a/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/59372a.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_59372a() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_59372a();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_59372a() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_59372a();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_59372a() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_59372a();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.glsl
index 0bd3a3d..8fe9861 100644
--- a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_5ba85f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5ba85f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCube arg_1_arg_2;
+ivec4 textureGather_5ba85f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5ba85f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCube arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_5ba85f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5ba85f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.glsl
index 0bd3a3d..2019d4a 100644
--- a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_5bd491() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_5bd491();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_5bd491() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_5bd491();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_5bd491() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_5bd491();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.glsl
index 0bd3a3d..a5747c3 100644
--- a/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/6b7b74.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_6b7b74() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_6b7b74();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_6b7b74() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_6b7b74();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_6b7b74() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_6b7b74();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.glsl
index 0bd3a3d..eee4f19 100644
--- a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_751f8a() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_751f8a();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_751f8a() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_751f8a();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_751f8a() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_751f8a();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.glsl
index 0bd3a3d..01e19d2 100644
--- a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_788010() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_788010();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_788010() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_788010();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_788010() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_788010();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.glsl
index 0bd3a3d..123dcd7 100644
--- a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_7c3828() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_7c3828();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_7c3828() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_7c3828();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_7c3828() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_7c3828();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.glsl
index 0bd3a3d..554e8a2 100644
--- a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_7dd226() {
+  vec3 arg_2 = vec3(1.0f);
+  uint arg_3 = 1u;
+  vec3 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_7dd226();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+vec4 textureGather_7dd226() {
+  vec3 arg_2 = vec3(1.0f);
+  uint arg_3 = 1u;
+  vec3 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_7dd226();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_7dd226() {
+  vec3 arg_2 = vec3(1.0f);
+  uint arg_3 = 1u;
+  vec3 v = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec4(v, float(arg_3)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_7dd226();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.glsl
index 0bd3a3d..85b0807 100644
--- a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_829357() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_829357();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_829357() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_829357();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_829357() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_829357();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.glsl
index 0bd3a3d..f53c4d3 100644
--- a/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/831549.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_831549() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_831549();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_831549() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_831549();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_831549() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_831549();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.glsl
index 0bd3a3d..8b30df6 100644
--- a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_8578bc() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8578bc();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_8578bc() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8578bc();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_8578bc() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8578bc();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.glsl
index 0bd3a3d..f5c919b 100644
--- a/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/89680f.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_89680f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_89680f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCube arg_1_arg_2;
+uvec4 textureGather_89680f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_89680f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCube arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_89680f() {
+  vec3 arg_3 = vec3(1.0f);
+  vec3 v = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_89680f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.glsl
index 0bd3a3d..198c36f 100644
--- a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_8b754c() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8b754c();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_8b754c() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8b754c();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_8b754c() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8b754c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.glsl
index 0bd3a3d..534f1eb 100644
--- a/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/8fae00.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_8fae00() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_8fae00();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_8fae00() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_8fae00();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_8fae00() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  uvec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_8fae00();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.glsl
index 0bd3a3d..504e1fe 100644
--- a/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/92ea47.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_92ea47() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_92ea47();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_92ea47() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_92ea47();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_92ea47() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_92ea47();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.glsl
index 0bd3a3d..92bfd42 100644
--- a/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/986700.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_986700() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_986700();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2D arg_1_arg_2;
+uvec4 textureGather_986700() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_986700();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2D arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_986700() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_986700();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.glsl
index 0bd3a3d..8890c29 100644
--- a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_9a6358() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_9a6358();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_9a6358() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_9a6358();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_9a6358() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v = arg_2;
+  vec4 res = textureGather(arg_0_arg_1, vec3(v, float(arg_3)), 0.0f);
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_9a6358();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.glsl
index 0bd3a3d..c24f357 100644
--- a/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/9ab41e.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_9ab41e() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_9ab41e();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_9ab41e() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_9ab41e();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_9ab41e() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_9ab41e();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.glsl
index 0bd3a3d..4459db6 100644
--- a/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/a0372b.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_a0372b() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_a0372b();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_a0372b() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_a0372b();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_a0372b() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_a0372b();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.glsl
index 0bd3a3d..ac9ab36 100644
--- a/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/a68027.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_a68027() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_a68027();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_a68027() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_a68027();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_a68027() {
+  vec2 arg_2 = vec2(1.0f);
+  uint arg_3 = 1u;
+  vec2 v = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_a68027();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.glsl
index 0bd3a3d..5c95bd7 100644
--- a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_aaf6bd() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_aaf6bd();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_aaf6bd() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_aaf6bd();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_aaf6bd() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_aaf6bd();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.glsl
index 0bd3a3d..63e9a14 100644
--- a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_af55b3() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_af55b3();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_af55b3() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_af55b3();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_af55b3() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_af55b3();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.glsl
index 0bd3a3d..f5600c0 100644
--- a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_bb3ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_bb3ac5();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_bb3ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_bb3ac5();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_bb3ac5() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_bb3ac5();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.glsl
index 0bd3a3d..68d9397 100644
--- a/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/bd33b6.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_bd33b6() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_bd33b6();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_bd33b6() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_bd33b6();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_bd33b6() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_bd33b6();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.glsl
index 0bd3a3d..b18ee09 100644
--- a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_be276f() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_be276f();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_be276f() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_be276f();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_be276f() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_be276f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.glsl
index 0bd3a3d..9eb67fc 100644
--- a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_c0640c() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_c0640c();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isamplerCubeArray arg_1_arg_2;
+ivec4 textureGather_c0640c() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_c0640c();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_c0640c() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_c0640c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.glsl
index 0bd3a3d..48364a7 100644
--- a/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/ccadde.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_ccadde() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ccadde();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_ccadde() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ccadde();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_ccadde() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  ivec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ccadde();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.glsl
index 0bd3a3d..b75ca88 100644
--- a/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/ce5578.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_ce5578() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ce5578();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_ce5578() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ce5578();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_ce5578() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ce5578();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.glsl
index 0bd3a3d..87de29f 100644
--- a/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/cf9112.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_cf9112() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_cf9112();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_cf9112() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_cf9112();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_cf9112() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_cf9112();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.glsl
index 0bd3a3d..c902c34 100644
--- a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_d1f187() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d1f187();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_d1f187() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d1f187();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_d1f187() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d1f187();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.glsl
index 0bd3a3d..6bc5f7b 100644
--- a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_d4b5c6() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d4b5c6();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_d4b5c6() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d4b5c6();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_d4b5c6() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d4b5c6();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.glsl
index 0bd3a3d..8605852 100644
--- a/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d6507c.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d6507c() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d6507c();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d6507c() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d6507c();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d6507c() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  vec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d6507c();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.glsl
index 0bd3a3d..6492c90 100644
--- a/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d8e958.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d8e958() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d8e958();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2D arg_1_arg_2;
+vec4 textureGather_d8e958() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d8e958();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2D arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d8e958() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  vec4 res = textureGather(arg_1_arg_2, v, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d8e958();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.glsl
index 0bd3a3d..5d56292 100644
--- a/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.ir.glsl
@@ -1,11 +1,68 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_d90605() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d90605();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+vec4 textureGather_d90605() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v_1 = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v_1, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d90605();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArrayShadow arg_0_arg_1;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d90605() {
+  vec2 arg_2 = vec2(1.0f);
+  int arg_3 = 1;
+  vec2 v = arg_2;
+  vec4 res = textureGatherOffset(arg_0_arg_1, vec3(v, float(arg_3)), 0.0f, ivec2(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d90605();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.glsl
index 0bd3a3d..85a0b53 100644
--- a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_d98d59() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_d98d59();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp samplerCubeArray arg_1_arg_2;
+vec4 textureGather_d98d59() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_d98d59();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp samplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_d98d59() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_d98d59();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.glsl
index 0bd3a3d..2481486 100644
--- a/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/dc6661.wgsl.expected.ir.glsl
@@ -1,11 +1,65 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_dc6661() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_dc6661();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2D arg_1_arg_2;
+ivec4 textureGather_dc6661() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v_1 = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_dc6661();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2D arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_dc6661() {
+  vec2 arg_3 = vec2(1.0f);
+  vec2 v = arg_3;
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_dc6661();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.glsl
index 0bd3a3d..3fe8a15 100644
--- a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_e2acac() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e2acac();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_e2acac() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e2acac();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_e2acac() {
+  vec3 arg_3 = vec3(1.0f);
+  uint arg_4 = 1u;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e2acac();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.glsl
index 0bd3a3d..a8eba6e 100644
--- a/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/e3165f.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_e3165f() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e3165f();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usampler2DArray arg_1_arg_2;
+uvec4 textureGather_e3165f() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e3165f();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usampler2DArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_e3165f() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  uvec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e3165f();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.glsl
index 0bd3a3d..6df8860 100644
--- a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_e9d390() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_e9d390();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+uniform highp isampler2DArray arg_1_arg_2;
+ivec4 textureGather_e9d390() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_2, ivec2(1), int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_e9d390();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  ivec4 prevent_dce;
+};
+
+uniform highp isampler2DArray arg_1_arg_2;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
+ivec4 textureGather_e9d390() {
+  vec2 arg_3 = vec2(1.0f);
+  int arg_4 = 1;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  ivec4 res = textureGatherOffset(arg_1_arg_2, v_1, ivec2(1), int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_e9d390();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.glsl
index 0bd3a3d..890b27b 100644
--- a/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/ea8eb4.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_ea8eb4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_ea8eb4();
+}
+#version 310 es
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+uniform highp sampler2DArray arg_1_arg_2;
+vec4 textureGather_ea8eb4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v_1 = arg_3;
+  vec3 v_2 = vec3(v_1, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_2, int(1u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_ea8eb4();
+}
+#version 310 es
+
+
+struct VertexOutput {
+  vec4 pos;
+  vec4 prevent_dce;
+};
+
+uniform highp sampler2DArray arg_1_arg_2;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
+vec4 textureGather_ea8eb4() {
+  vec2 arg_3 = vec2(1.0f);
+  uint arg_4 = 1u;
+  vec2 v = arg_3;
+  vec3 v_1 = vec3(v, float(arg_4));
+  vec4 res = textureGather(arg_1_arg_2, v_1, int(1u));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_ea8eb4();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.glsl
index 0bd3a3d..694c6d5 100644
--- a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.ir.glsl
@@ -1,11 +1,71 @@
-SKIP: FAILED
+#version 460
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  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.  *
-********************************************************************
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_f2c6e3() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+void main() {
+  v.tint_symbol = textureGather_f2c6e3();
+}
+#version 460
 
-tint executable returned error: signal: trace/BPT trap
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uniform highp usamplerCubeArray arg_1_arg_2;
+uvec4 textureGather_f2c6e3() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v_1 = arg_3;
+  vec4 v_2 = vec4(v_1, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_2, int(1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = textureGather_f2c6e3();
+}
+#version 460
+
+
+struct VertexOutput {
+  vec4 pos;
+  uvec4 prevent_dce;
+};
+
+uniform highp usamplerCubeArray arg_1_arg_2;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
+uvec4 textureGather_f2c6e3() {
+  vec3 arg_3 = vec3(1.0f);
+  int arg_4 = 1;
+  vec3 v = arg_3;
+  vec4 v_1 = vec4(v, float(arg_4));
+  uvec4 res = textureGather(arg_1_arg_2, v_1, int(1));
+  return res;
+}
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
+  tint_symbol.pos = vec4(0.0f);
+  tint_symbol.prevent_dce = textureGather_f2c6e3();
+  return tint_symbol;
+}
+void main() {
+  VertexOutput v_2 = vertex_main_inner();
+  gl_Position = v_2.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_2.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.glsl
index 0bd3a3d..fc30162 100644
--- a/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp sampler2D t_s;
+void main() {
+  vec4 res = textureGather(t_s, vec2(0.0f), int(3));
+}
diff --git a/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.glsl
index 0bd3a3d..b2466fa 100644
--- a/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp sampler2D t_s;
+void main() {
+  vec4 res = textureGather(t_s, vec2(0.0f), int(2));
+}
diff --git a/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.glsl
index 0bd3a3d..42f00c3 100644
--- a/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/f32/green.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp sampler2D t_s;
+void main() {
+  vec4 res = textureGather(t_s, vec2(0.0f), int(1));
+}
diff --git a/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.glsl
index 0bd3a3d..f8a7c8f 100644
--- a/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/f32/red.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp sampler2D t_s;
+void main() {
+  vec4 res = textureGather(t_s, vec2(0.0f), int(0));
+}
diff --git a/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.glsl
index 0bd3a3d..1cce01d 100644
--- a/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp isampler2D t_s;
+void main() {
+  ivec4 res = textureGather(t_s, vec2(0.0f), int(3));
+}
diff --git a/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.glsl
index 0bd3a3d..0373ff3 100644
--- a/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp isampler2D t_s;
+void main() {
+  ivec4 res = textureGather(t_s, vec2(0.0f), int(2));
+}
diff --git a/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.glsl
index 0bd3a3d..60be7c2 100644
--- a/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/i32/green.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp isampler2D t_s;
+void main() {
+  ivec4 res = textureGather(t_s, vec2(0.0f), int(1));
+}
diff --git a/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.glsl
index 0bd3a3d..fe02892 100644
--- a/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/i32/red.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp isampler2D t_s;
+void main() {
+  ivec4 res = textureGather(t_s, vec2(0.0f), int(0));
+}
diff --git a/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.glsl
index 0bd3a3d..0f071ed 100644
--- a/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp usampler2D t_s;
+void main() {
+  uvec4 res = textureGather(t_s, vec2(0.0f), int(3));
+}
diff --git a/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.glsl
index 0bd3a3d..334f88a 100644
--- a/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp usampler2D t_s;
+void main() {
+  uvec4 res = textureGather(t_s, vec2(0.0f), int(2));
+}
diff --git a/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.glsl
index 0bd3a3d..8f996fc 100644
--- a/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/u32/green.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp usampler2D t_s;
+void main() {
+  uvec4 res = textureGather(t_s, vec2(0.0f), int(1));
+}
diff --git a/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.glsl b/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.glsl
index 0bd3a3d..f74af8c 100644
--- a/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/textureGather/u32/red.wgsl.expected.ir.glsl
@@ -1,11 +1,8 @@
-SKIP: FAILED
+#version 310 es
+precision highp float;
+precision highp int;
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:1468 internal compiler error: TINT_UNREACHABLE unhandled core builtin: textureGather
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
-tint executable returned error: signal: trace/BPT trap
+uniform highp usampler2D t_s;
+void main() {
+  uvec4 res = textureGather(t_s, vec2(0.0f), int(0));
+}