diff --git a/src/tint/lang/glsl/glsl.def b/src/tint/lang/glsl/glsl.def
index 4b7312d..ecc6664 100644
--- a/src/tint/lang/glsl/glsl.def
+++ b/src/tint/lang/glsl/glsl.def
@@ -384,41 +384,41 @@
 implicit(F: u32_texel_format, A: readable) fn imageLoad(texture: texture_storage_3d<F, A>,
                                                       coords: vec3<i32>) -> vec4<u32>
 
-implicit(C: iu32) fn imageStore(texture: texture_storage_1d<f32_texel_format, writable>,
-                                coords: C,
+fn imageStore(texture: texture_storage_1d<f32_texel_format, writable>,
+                                coords: i32,
                                 value: vec4<f32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_1d<i32_texel_format, writable>,
-                                coords: C,
+fn imageStore(texture: texture_storage_1d<i32_texel_format, writable>,
+                                coords: i32,
                                 value: vec4<i32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_1d<u32_texel_format, writable>,
-                                coords: C,
+fn imageStore(texture: texture_storage_1d<u32_texel_format, writable>,
+                                coords: i32,
                                 value: vec4<u32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d<f32_texel_format, writable>,
-                                coords: vec2<C>,
+fn imageStore(texture: texture_storage_2d<f32_texel_format, writable>,
+                                coords: vec2<i32>,
                                 value: vec4<f32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d<i32_texel_format, writable>,
-                                coords: vec2<C>,
+fn imageStore(texture: texture_storage_2d<i32_texel_format, writable>,
+                                coords: vec2<i32>,
                                 value: vec4<i32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d<u32_texel_format, writable>,
-                                coords: vec2<C>,
+fn imageStore(texture: texture_storage_2d<u32_texel_format, writable>,
+                                coords: vec2<i32>,
                                 value: vec4<u32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_3d<f32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_3d<f32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<f32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_3d<i32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_3d<i32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<i32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_3d<u32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_3d<u32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<u32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d_array<f32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_2d_array<f32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<f32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d_array<i32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_2d_array<i32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<i32>)
-implicit(C: iu32) fn imageStore(texture: texture_storage_2d_array<u32_texel_format, writable>,
-                                coords: vec3<C>,
+fn imageStore(texture: texture_storage_2d_array<u32_texel_format, writable>,
+                                coords: vec3<i32>,
                                 value: vec4<u32>)
 
 implicit(T: fiu32_f16 N: num) fn lessThan(vec<N, T>, vec<N, T>) -> vec<N, bool>
diff --git a/src/tint/lang/glsl/intrinsic/data.cc b/src/tint/lang/glsl/intrinsic/data.cc
index 80a10cd..d2468f2 100644
--- a/src/tint/lang/glsl/intrinsic/data.cc
+++ b/src/tint/lang/glsl/intrinsic/data.cc
@@ -1087,22 +1087,18 @@
   /* [134] */ MatcherIndex(5),
   /* [135] */ MatcherIndex(11),
   /* [136] */ MatcherIndex(6),
-  /* [137] */ MatcherIndex(9),
-  /* [138] */ MatcherIndex(0),
-  /* [139] */ MatcherIndex(10),
-  /* [140] */ MatcherIndex(0),
-  /* [141] */ MatcherIndex(30),
-  /* [142] */ MatcherIndex(32),
-  /* [143] */ MatcherIndex(35),
-  /* [144] */ MatcherIndex(29),
-  /* [145] */ MatcherIndex(20),
-  /* [146] */ MatcherIndex(21),
-  /* [147] */ MatcherIndex(22),
-  /* [148] */ MatcherIndex(23),
-  /* [149] */ MatcherIndex(31),
-  /* [150] */ MatcherIndex(24),
-  /* [151] */ MatcherIndex(33),
-  /* [152] */ MatcherIndex(34),
+  /* [137] */ MatcherIndex(30),
+  /* [138] */ MatcherIndex(32),
+  /* [139] */ MatcherIndex(35),
+  /* [140] */ MatcherIndex(29),
+  /* [141] */ MatcherIndex(20),
+  /* [142] */ MatcherIndex(21),
+  /* [143] */ MatcherIndex(22),
+  /* [144] */ MatcherIndex(23),
+  /* [145] */ MatcherIndex(31),
+  /* [146] */ MatcherIndex(24),
+  /* [147] */ MatcherIndex(33),
+  /* [148] */ MatcherIndex(34),
 };
 
 static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -1187,7 +1183,7 @@
   {
     /* [15] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [16] */
@@ -1212,7 +1208,7 @@
   {
     /* [20] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(146),
+    /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
     /* [21] */
@@ -1337,7 +1333,7 @@
   {
     /* [45] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
+    /* matcher_indices */ MatcherIndicesIndex(144),
   },
   {
     /* [46] */
@@ -1417,7 +1413,7 @@
   {
     /* [61] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [62] */
@@ -1437,7 +1433,7 @@
   {
     /* [65] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(146),
+    /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
     /* [66] */
@@ -1537,7 +1533,7 @@
   {
     /* [85] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [86] */
@@ -1557,7 +1553,7 @@
   {
     /* [89] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(146),
+    /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
     /* [90] */
@@ -1722,7 +1718,7 @@
   {
     /* [122] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [123] */
@@ -1737,7 +1733,7 @@
   {
     /* [125] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(146),
+    /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
     /* [126] */
@@ -1782,7 +1778,7 @@
   {
     /* [134] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(147),
+    /* matcher_indices */ MatcherIndicesIndex(143),
   },
   {
     /* [135] */
@@ -1857,7 +1853,7 @@
   {
     /* [149] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(147),
+    /* matcher_indices */ MatcherIndicesIndex(143),
   },
   {
     /* [150] */
@@ -1872,7 +1868,7 @@
   {
     /* [152] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
+    /* matcher_indices */ MatcherIndicesIndex(144),
   },
   {
     /* [153] */
@@ -1952,7 +1948,7 @@
   {
     /* [168] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [169] */
@@ -1967,7 +1963,7 @@
   {
     /* [171] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [172] */
@@ -1982,7 +1978,7 @@
   {
     /* [174] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(3),
+    /* matcher_indices */ MatcherIndicesIndex(10),
   },
   {
     /* [175] */
@@ -1997,7 +1993,7 @@
   {
     /* [177] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(137),
+    /* matcher_indices */ MatcherIndicesIndex(115),
   },
   {
     /* [178] */
@@ -2012,7 +2008,7 @@
   {
     /* [180] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(137),
+    /* matcher_indices */ MatcherIndicesIndex(115),
   },
   {
     /* [181] */
@@ -2027,7 +2023,7 @@
   {
     /* [183] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(137),
+    /* matcher_indices */ MatcherIndicesIndex(115),
   },
   {
     /* [184] */
@@ -2042,7 +2038,7 @@
   {
     /* [186] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [187] */
@@ -2057,7 +2053,7 @@
   {
     /* [189] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [190] */
@@ -2072,7 +2068,7 @@
   {
     /* [192] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [193] */
@@ -2087,7 +2083,7 @@
   {
     /* [195] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [196] */
@@ -2102,7 +2098,7 @@
   {
     /* [198] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [199] */
@@ -2117,7 +2113,7 @@
   {
     /* [201] */
     /* usage */ core::ParameterUsage::kCoords,
-    /* matcher_indices */ MatcherIndicesIndex(139),
+    /* matcher_indices */ MatcherIndicesIndex(117),
   },
   {
     /* [202] */
@@ -2237,7 +2233,7 @@
   {
     /* [225] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(145),
+    /* matcher_indices */ MatcherIndicesIndex(141),
   },
   {
     /* [226] */
@@ -2247,7 +2243,7 @@
   {
     /* [227] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(146),
+    /* matcher_indices */ MatcherIndicesIndex(142),
   },
   {
     /* [228] */
@@ -2257,7 +2253,7 @@
   {
     /* [229] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(147),
+    /* matcher_indices */ MatcherIndicesIndex(143),
   },
   {
     /* [230] */
@@ -2267,7 +2263,7 @@
   {
     /* [231] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(148),
+    /* matcher_indices */ MatcherIndicesIndex(144),
   },
   {
     /* [232] */
@@ -2357,7 +2353,7 @@
   {
     /* [249] */
     /* usage */ core::ParameterUsage::kTexture,
-    /* matcher_indices */ MatcherIndicesIndex(150),
+    /* matcher_indices */ MatcherIndicesIndex(146),
   },
 };
 
@@ -2380,7 +2376,7 @@
   {
     /* [2] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(141),
+    /* matcher_indices */ MatcherIndicesIndex(137),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2392,7 +2388,7 @@
   {
     /* [4] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(141),
+    /* matcher_indices */ MatcherIndicesIndex(137),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2404,13 +2400,13 @@
   {
     /* [6] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(144),
+    /* matcher_indices */ MatcherIndicesIndex(140),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
     /* [7] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(142),
+    /* matcher_indices */ MatcherIndicesIndex(138),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2422,7 +2418,7 @@
   {
     /* [9] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(143),
+    /* matcher_indices */ MatcherIndicesIndex(139),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2482,7 +2478,7 @@
   {
     /* [19] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(151),
+    /* matcher_indices */ MatcherIndicesIndex(147),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2494,7 +2490,7 @@
   {
     /* [21] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(152),
+    /* matcher_indices */ MatcherIndicesIndex(148),
     /* kind */ TemplateInfo::Kind::kType,
   },
   {
@@ -2506,13 +2502,7 @@
   {
     /* [23] */
     /* name */ "T",
-    /* matcher_indices */ MatcherIndicesIndex(149),
-    /* kind */ TemplateInfo::Kind::kType,
-  },
-  {
-    /* [24] */
-    /* name */ "C",
-    /* matcher_indices */ MatcherIndicesIndex(141),
+    /* matcher_indices */ MatcherIndicesIndex(145),
     /* kind */ TemplateInfo::Kind::kType,
   },
 };
@@ -2820,8 +2810,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(167),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2831,8 +2821,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(170),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2842,8 +2832,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(173),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2853,8 +2843,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(176),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2864,8 +2854,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(179),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2875,8 +2865,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(182),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2886,8 +2876,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(185),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2897,8 +2887,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(188),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2908,8 +2898,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(191),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2919,8 +2909,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(194),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2930,8 +2920,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(197),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -2941,8 +2931,8 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
+    /* num_templates   */ 0,
+    /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(200),
     /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -4302,18 +4292,18 @@
   },
   {
     /* [36] */
-    /* 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>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d<i32_texel_format, writable>, coords: vec2<C>, value: vec4<i32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<C>, value: vec4<u32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_3d<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_3d<i32_texel_format, writable>, coords: vec3<C>, value: vec4<i32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d_array<i32_texel_format, writable>, coords: vec3<C>, value: vec4<i32>) */
-    /* fn imageStore[C : iu32](texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */
+    /* fn imageStore(texture: texture_storage_1d<f32_texel_format, writable>, coords: i32, value: vec4<f32>) */
+    /* fn imageStore(texture: texture_storage_1d<i32_texel_format, writable>, coords: i32, value: vec4<i32>) */
+    /* fn imageStore(texture: texture_storage_1d<u32_texel_format, writable>, coords: i32, value: vec4<u32>) */
+    /* fn imageStore(texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<i32>, value: vec4<f32>) */
+    /* fn imageStore(texture: texture_storage_2d<i32_texel_format, writable>, coords: vec2<i32>, value: vec4<i32>) */
+    /* fn imageStore(texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<i32>, value: vec4<u32>) */
+    /* fn imageStore(texture: texture_storage_3d<f32_texel_format, writable>, coords: vec3<i32>, value: vec4<f32>) */
+    /* fn imageStore(texture: texture_storage_3d<i32_texel_format, writable>, coords: vec3<i32>, value: vec4<i32>) */
+    /* fn imageStore(texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<i32>, value: vec4<u32>) */
+    /* fn imageStore(texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec3<i32>, value: vec4<f32>) */
+    /* fn imageStore(texture: texture_storage_2d_array<i32_texel_format, writable>, coords: vec3<i32>, value: vec4<i32>) */
+    /* fn imageStore(texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec3<i32>, value: vec4<u32>) */
     /* num overloads */ 12,
     /* overloads */ OverloadIndex(26),
   },
diff --git a/src/tint/lang/glsl/writer/raise/texture_polyfill.cc b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
index c8cca47..d3d8044 100644
--- a/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill.cc
@@ -620,18 +620,25 @@
 
             if (tex_type->Dim() == core::type::TextureDimension::k2dArray) {
                 auto* coords = args[idx++];
-                auto* array_idx = args[idx++];
+                if (!coords->Type()->DeepestElement()->Is<core::type::I32>()) {
+                    coords = b.Convert(ty.vec2<i32>(), coords)->Result(0);
+                }
+
+                auto* array = b.Convert(ty.i32(), args[idx++]);
 
                 auto* coords_ty = coords->Type()->As<core::type::Vector>();
                 TINT_ASSERT(coords_ty);
 
-                auto* new_coords = b.Construct(ty.vec3(coords_ty->Type()), coords,
-                                               b.Convert(coords_ty->Type(), array_idx));
+                auto* new_coords = b.Construct(ty.vec3<i32>(), coords, array);
                 new_args.Push(new_coords->Result(0));
 
                 new_args.Push(args[idx++]);
             } else {
-                new_args.Push(args[idx++]);
+                auto* coords = args[idx++];
+                if (!coords->Type()->DeepestElement()->Is<core::type::I32>()) {
+                    coords = b.Convert(ty.MatchWidth(ty.i32(), coords->Type()), coords)->Result(0);
+                }
+                new_args.Push(coords);
                 new_args.Push(args[idx++]);
             }
 
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 a24eb77..7826525 100644
--- a/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
+++ b/src/tint/lang/glsl/writer/raise/texture_polyfill_test.cc
@@ -955,6 +955,116 @@
     EXPECT_EQ(expect, str());
 }
 
+TEST_F(GlslWriter_TexturePolyfillTest, TextureStore2D) {
+    auto* t = b.Var(ty.ptr(
+        handle, ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k2d, core::TexelFormat::kRgba32Sint,
+                    core::Access::kReadWrite,
+                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRgba32Sint, ty))));
+    t->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(t);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Splat(ty.vec2<u32>(), 0_u);
+        auto* value = b.Composite(ty.vec4<i32>(), 5_i, 0_i, 0_i, 1_i);
+        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, value);
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d<rgba32sint, read_write> = load %1
+    %4:void = textureStore %3, vec2<u32>(0u), vec4<i32>(5i, 0i, 0i, 1i)
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d<rgba32sint, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d<rgba32sint, read_write> = load %1
+    %4:vec2<i32> = convert vec2<u32>(0u)
+    %5:void = glsl.imageStore %3, %4, vec4<i32>(5i, 0i, 0i, 1i)
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_TexturePolyfillTest, TextureStore2DArray) {
+    auto* t = b.Var(ty.ptr(
+        handle, ty.Get<core::type::StorageTexture>(
+                    core::type::TextureDimension::k2dArray, core::TexelFormat::kRgba32Sint,
+                    core::Access::kReadWrite,
+                    core::type::StorageTexture::SubtypeFor(core::TexelFormat::kRgba32Sint, ty))));
+    t->SetBindingPoint(0, 0);
+    b.ir.root_block->Append(t);
+
+    auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(func->Block(), [&] {
+        auto* coords = b.Splat(ty.vec2<u32>(), 0_u);
+        auto* value = b.Composite(ty.vec4<i32>(), 5_i, 0_i, 0_i, 1_i);
+        b.Call(ty.void_(), core::BuiltinFn::kTextureStore, b.Load(t), coords, 1_i, value);
+        b.Return(func);
+    });
+
+    auto* src = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %1
+    %4:void = textureStore %3, vec2<u32>(0u), 1i, vec4<i32>(5i, 0i, 0i, 1i)
+    ret
+  }
+}
+)";
+    ASSERT_EQ(src, str());
+
+    auto* expect = R"(
+$B1: {  # root
+  %1:ptr<handle, texture_storage_2d_array<rgba32sint, read_write>, read> = var @binding_point(0, 0)
+}
+
+%foo = @fragment func():void {
+  $B2: {
+    %3:texture_storage_2d_array<rgba32sint, read_write> = load %1
+    %4:vec2<i32> = convert vec2<u32>(0u)
+    %5:i32 = convert 1i
+    %6:vec3<i32> = construct %4, %5
+    %7:void = glsl.imageStore %3, %6, vec4<i32>(5i, 0i, 0i, 1i)
+    ret
+  }
+}
+)";
+
+    capabilities = core::ir::Capabilities{core::ir::Capability::kAllowHandleVarsWithoutBindings};
+
+    TexturePolyfillConfig cfg;
+    Run(TexturePolyfill, cfg);
+    EXPECT_EQ(expect, str());
+}
+
 TEST_F(GlslWriter_TexturePolyfillTest, TextureStore3D) {
     auto* t = b.Var(ty.ptr(
         handle, ty.Get<core::type::StorageTexture>(
diff --git a/test/tint/bug/tint/942.wgsl.expected.ir.glsl b/test/tint/bug/tint/942.wgsl.expected.ir.glsl
index cf691fb..77bf12e 100644
--- a/test/tint/bug/tint/942.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 
@@ -136,7 +134,8 @@
               }
             }
             uvec2 v_15 = writeIndex;
-            imageStore(outputTex, v_15, vec4(acc, 1.0f));
+            vec4 v_16 = vec4(acc, 1.0f);
+            imageStore(outputTex, ivec2(v_15), v_16);
           }
           {
             c = (c + 1u);
@@ -155,12 +154,3 @@
 void main() {
   tint_symbol_inner(gl_WorkGroupID, gl_LocalInvocationID, gl_LocalInvocationIndex);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:137: 'imageStore' : no matching overloaded function found 
-ERROR: 0:137: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.glsl
index 984239a..2b09615 100644
--- a/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0148bd.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0148bd() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_0148bd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0148bd() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0148bd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.glsl
index ab6d48c..c9cb862 100644
--- a/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/07548b.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_07548b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_07548b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.glsl
index 28e0c87..fb22713 100644
--- a/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0a1a79.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_0a1a79() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_0a1a79();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_0a1a79() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0a1a79();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.glsl
index 8caffa9..71983d8 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0ade9a.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
 void textureStore_0ade9a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_0ade9a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
 void textureStore_0ade9a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0ade9a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.glsl
index c6c938a..d1dc46c 100644
--- a/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0cc825.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0cc825() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_0cc825();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0cc825() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0cc825();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.glsl
index 249273b..59393af 100644
--- a/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/0ff97a.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
 void textureStore_0ff97a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_0ff97a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
 void textureStore_0ff97a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0ff97a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.glsl
index e1d5c23..0f62b49 100644
--- a/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/158cf0.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_158cf0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_158cf0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_158cf0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_158cf0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.glsl
index df94c14..2712808 100644
--- a/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1839f2.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_1839f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1839f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.glsl
index 5aa07cc..b193a4f 100644
--- a/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1a6c0b.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
 void textureStore_1a6c0b() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_1a6c0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
 void textureStore_1a6c0b() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1a6c0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.glsl
index 526d7a1..7787729 100644
--- a/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1a7d35.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1a7d35() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_1a7d35();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1a7d35() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1a7d35();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.glsl
index 0692f4f..9c04c19 100644
--- a/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1dc954() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_1dc954();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1dc954() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1dc954();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.glsl
index 8c12663..a6ebc04 100644
--- a/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1e20f2.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_1e20f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1e20f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.glsl
index bdfc858..fc81d39 100644
--- a/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1e9fbd.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
 void textureStore_1e9fbd() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_1e9fbd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
 void textureStore_1e9fbd() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1e9fbd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.glsl
index 8e93a53..087abb9 100644
--- a/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1efc36.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_1efc36() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_1efc36();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_1efc36() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1efc36();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.glsl
index f37dee6..383ec4a 100644
--- a/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1fef04.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_1fef04() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_1fef04();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_1fef04() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1fef04();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.glsl
index 9697f1b..648408c 100644
--- a/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/207fdd.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_207fdd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_207fdd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.glsl
index e01984c..f20fae4 100644
--- a/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2383fc.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_2383fc() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_2383fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_2383fc() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2383fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.glsl
index 96c0540..48b43e9 100644
--- a/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/258ab0.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_258ab0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_258ab0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_258ab0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_258ab0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.glsl
index 5f6efb7..eefe6e5 100644
--- a/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/27063a.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_27063a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f).zyxw);
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_27063a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_27063a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f).zyxw);
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_27063a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.glsl
index a0d4786..e614d74 100644
--- a/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_285218() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_285218();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_285218() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_285218();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.glsl
index 08f91a0..bd7ee31 100644
--- a/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/28a7ec.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_28a7ec() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_28a7ec();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_28a7ec() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_28a7ec();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.glsl
index 4012f18..7ea2e72 100644
--- a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_2d2835();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2d2835();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.glsl
index 0bbb5c6..94a35c7 100644
--- a/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2e512f.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_2e512f() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_2e512f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_2e512f() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2e512f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.glsl
index 3b80723..d23c205 100644
--- a/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2e6102.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_2e6102();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2e6102();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.glsl
index 2b2d937..482ca55 100644
--- a/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/32d3d6.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_32d3d6() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_32d3d6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_32d3d6() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_32d3d6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.glsl
index 1615489..7819196 100644
--- a/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/330b7c.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_330b7c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_330b7c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_330b7c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_330b7c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.glsl
index 8640418..ccc214e 100644
--- a/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/33cec0.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_33cec0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_33cec0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_33cec0() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_33cec0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.glsl
index 1266476..f4205b6 100644
--- a/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/37ffd4.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_37ffd4() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_37ffd4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_37ffd4() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_37ffd4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.glsl
index bdf1592..758cbf9 100644
--- a/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3c1937() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_3c1937();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_3c1937() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3c1937();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.glsl
index 37dbaa2..b943242 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3d1ebe.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_3d1ebe() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_3d1ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_3d1ebe() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3d1ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.glsl
index 2492bde..91e265c 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_3d6f01() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_3d6f01();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_3d6f01() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3d6f01();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.glsl
index c0b3e62..dcd7ec1 100644
--- a/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_3fb31f() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_3fb31f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_3fb31f() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3fb31f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.glsl
index d63708c..59e5a7e 100644
--- a/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/40c455.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_40c455();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_40c455();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.glsl
index db9f6b5..907654c 100644
--- a/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4288fc.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_4288fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4288fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.glsl
index 2892c35..7387018 100644
--- a/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/473ead.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp uimage3D arg_0;
 void textureStore_473ead() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_473ead();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage3D arg_0;
 void textureStore_473ead() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_473ead();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.glsl
index e7a444a..62554d5 100644
--- a/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/486500.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_486500();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_486500();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.glsl
index db79f3b..66e99624 100644
--- a/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4bf1fd.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_4bf1fd() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_4bf1fd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_4bf1fd() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4bf1fd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.glsl
index 2225395..dae2dff 100644
--- a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_4c454f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4c454f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.glsl
index 167550e..b99a618 100644
--- a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_4d359d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4d359d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.glsl
index f194a6a..5e273fd 100644
--- a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_506a71();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_506a71();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.glsl
index 3064272..7c590c3 100644
--- a/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5246b4.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp uimage3D arg_0;
 void textureStore_5246b4() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_5246b4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage3D arg_0;
 void textureStore_5246b4() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5246b4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.glsl
index f3f8024..49162f5 100644
--- a/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/52f503.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_52f503();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_52f503();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.glsl
index 719f645..a1725eb 100644
--- a/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/574a31.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_574a31() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_574a31();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_574a31() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_574a31();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.glsl
index 3a8b151..fb3f6db 100644
--- a/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5841f8.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_5841f8() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_5841f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_5841f8() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5841f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.glsl
index 247f289..8515a0a 100644
--- a/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/59a0ab.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_59a0ab() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_59a0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_59a0ab() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_59a0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.glsl
index 70de6dc..dd2ee3c 100644
--- a/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5b17eb.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_5b17eb() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_5b17eb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_5b17eb() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5b17eb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.glsl
index 0bcf2a4..9163c4b 100644
--- a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_5bc4f3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5bc4f3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.glsl
index 77d5b5b..726df87 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5ec6b2.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp image3D arg_0;
 void textureStore_5ec6b2() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_5ec6b2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image3D arg_0;
 void textureStore_5ec6b2() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5ec6b2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.glsl
index d60190e..3604e4d 100644
--- a/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5ee194.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
 void textureStore_5ee194() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_5ee194();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
 void textureStore_5ee194() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5ee194();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.glsl
index 02dd2a5..0a7044d 100644
--- a/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5f9a49.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_5f9a49() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_5f9a49();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_5f9a49() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5f9a49();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.glsl
index 266af4d..c573952 100644
--- a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_602b5a() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_602b5a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_602b5a() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_602b5a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.glsl
index 687406e..5c20b31 100644
--- a/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/635584.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_635584() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_635584();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_635584() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_635584();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.glsl
index 3a30286..2d9e83d 100644
--- a/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/63f34a.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_63f34a() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_63f34a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_63f34a() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_63f34a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.glsl
index 27058f2..38ef947 100644
--- a/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/699a1b.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_699a1b() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_699a1b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_699a1b() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_699a1b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.glsl
index 8e2bf67..ce83501 100644
--- a/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6c4a70.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_6c4a70() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_6c4a70();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_6c4a70() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6c4a70();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.glsl
index 4af902f..861afde 100644
--- a/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6f0c92.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
 void textureStore_6f0c92() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_6f0c92();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
 void textureStore_6f0c92() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6f0c92();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.glsl
index 6ebbcde..0e38020 100644
--- a/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6f8642.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6f8642() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_6f8642();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6f8642() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6f8642();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/6fd2b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/6fd2b1.wgsl.expected.ir.glsl
index 2175601..119072a 100644
--- a/test/tint/builtins/gen/literal/textureStore/6fd2b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6fd2b1.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_6fd2b1() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_6fd2b1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_6fd2b1() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6fd2b1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.glsl
index 7e2fb44..e872445 100644
--- a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_726472();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_726472();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.glsl
index f4334a3..8d65028 100644
--- a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_72fa64();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_72fa64();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.glsl
index 1214886..565fdb3 100644
--- a/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/73bbbc.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_73bbbc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_73bbbc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.glsl
index c5a17e4..d5355c6 100644
--- a/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7792fa.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp iimage3D arg_0;
 void textureStore_7792fa() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_7792fa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage3D arg_0;
 void textureStore_7792fa() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7792fa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.glsl
index 5558dbd..5bd7043 100644
--- a/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/779d14.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_779d14() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_779d14();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_779d14() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_779d14();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.glsl
index 13ebdee..1898fd7 100644
--- a/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7b8f86.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp image3D arg_0;
 void textureStore_7b8f86() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_7b8f86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image3D arg_0;
 void textureStore_7b8f86() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7b8f86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.glsl
index a1ef2d8..f5707a9 100644
--- a/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7cf6e7.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_7cf6e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7cf6e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.glsl
index 3a61a61..b14b023 100644
--- a/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/803a10.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp image3D arg_0;
 void textureStore_803a10() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_803a10();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image3D arg_0;
 void textureStore_803a10() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_803a10();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.glsl
index 925f934..4cab285 100644
--- a/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8a8681.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_8a8681() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_8a8681();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_8a8681() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8a8681();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.glsl
index 3ba8ddb..f4c65f8 100644
--- a/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8b9310.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_8b9310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8b9310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.glsl
index dd64c50..b372a64 100644
--- a/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8bb287.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_8bb287() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_8bb287();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_8bb287() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8bb287();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.glsl
index 53c6d4a..e9a48be 100644
--- a/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_8c76e9() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_8c76e9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_8c76e9() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8c76e9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8cd611.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8cd611.wgsl.expected.ir.glsl
index 7ac5d9d..f6ae00b 100644
--- a/test/tint/builtins/gen/literal/textureStore/8cd611.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8cd611.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp writeonly image3D arg_0;
 void textureStore_8cd611() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_8cd611();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image3D arg_0;
 void textureStore_8cd611() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8cd611();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.glsl
index 91fc46f..895d580 100644
--- a/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8dc54f.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_8dc54f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8dc54f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.glsl
index ab7d75e..f5190bd 100644
--- a/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8ed9f8.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_8ed9f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8ed9f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.glsl
index 75bc1a0..dd6ad99 100644
--- a/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_958353() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_958353();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_958353() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_958353();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.glsl
index 2e02841..7241589 100644
--- a/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_959d94() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_959d94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_959d94() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_959d94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.glsl
index 0aa1135..f547c2b 100644
--- a/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/95e452.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_95e452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_95e452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.glsl
index d121357..270cf99 100644
--- a/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/9aedd3.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_9aedd3() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_9aedd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_9aedd3() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9aedd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/9e5bc2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/9e5bc2.wgsl.expected.ir.glsl
index 377a1a2..2437074 100644
--- a/test/tint/builtins/gen/literal/textureStore/9e5bc2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/9e5bc2.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_9e5bc2() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_9e5bc2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_9e5bc2() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9e5bc2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.glsl
index 2e668fd..41207fd 100644
--- a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_9f5318();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9f5318();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.glsl
index 5377d89..8abc0af 100644
--- a/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a0f96e.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a0f96e() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_a0f96e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a0f96e() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a0f96e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.glsl
index 1bb7bcc..fb1ab32 100644
--- a/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a1352c.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_a1352c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_a1352c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_a1352c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a1352c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.glsl
index 7d571bf..0ca70e2 100644
--- a/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a165b8.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_a165b8() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_a165b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_a165b8() {
-  imageStore(arg_0, uvec2(1u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a165b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.glsl
index 7742ce1..40411e2 100644
--- a/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_a4c338() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_a4c338();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_a4c338() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a4c338();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.glsl
index b0fe555..91a7dd0 100644
--- a/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a5e80d.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_a5e80d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a5e80d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.glsl
index 4f4c3af..577feab 100644
--- a/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a6a986.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a6a986() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_a6a986();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a6a986() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a6a986();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.glsl
index d8340d3..966f06f 100644
--- a/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_a6e78f() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_a6e78f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_a6e78f() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a6e78f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.glsl
index 35ecc3c..79fc68a 100644
--- a/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a7fc47.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_a7fc47() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_a7fc47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_a7fc47() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a7fc47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.glsl
index 4a3c600..2a2ed97a 100644
--- a/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a9298c.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_a9298c() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_a9298c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_a9298c() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a9298c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.glsl
index d40369a..7468ed6 100644
--- a/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a9426c.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_a9426c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_a9426c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_a9426c() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a9426c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.glsl
index 0f14382..6c022b4 100644
--- a/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/abdd21.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
 void textureStore_abdd21() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_abdd21();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
 void textureStore_abdd21() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_abdd21();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.glsl
index 14ea815..55580b3 100644
--- a/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ae6a2a.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
 void textureStore_ae6a2a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_ae6a2a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
 void textureStore_ae6a2a() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ae6a2a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.glsl
index f3beb5d..7ca7f5e 100644
--- a/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/aeb38a.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_aeb38a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_aeb38a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.glsl
index 790daca..68827ee 100644
--- a/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b42fd3.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_b42fd3() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 void main() {
   textureStore_b42fd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_b42fd3() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b42fd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.glsl
index 73a3891..ccd5594 100644
--- a/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b70ded() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_b70ded();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b70ded() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b70ded();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.glsl
index 4584d99..baedce0 100644
--- a/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b71c13.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
 void textureStore_b71c13() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_b71c13();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
 void textureStore_b71c13() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b71c13();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.glsl
index f42879d..f645ef5 100644
--- a/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b7232c.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_b7232c() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_b7232c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_b7232c() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b7232c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.glsl
index 18b1ce1..f89875f 100644
--- a/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b76ff3.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 void main() {
   textureStore_b76ff3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
-  imageStore(arg_0, uvec2(1u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b76ff3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.glsl
index 06ab556..13a0bd8 100644
--- a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b77161() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_b77161();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b77161() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b77161();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/b91b86.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/b91b86.wgsl.expected.ir.glsl
index cda7b4f8..7c40862 100644
--- a/test/tint/builtins/gen/literal/textureStore/b91b86.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b91b86.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
 void textureStore_b91b86() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_b91b86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
 void textureStore_b91b86() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b91b86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.glsl
index e677e9b..e0ab970 100644
--- a/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/bd6602.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
 void textureStore_bd6602() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_bd6602();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
 void textureStore_bd6602() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_bd6602();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.glsl
index d9bd4ac..3d55171 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_c1f29e() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_c1f29e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_c1f29e() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c1f29e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.glsl
index 45672ad..37f2263 100644
--- a/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c2ca46.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c2ca46() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_c2ca46();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c2ca46() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c2ca46();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.glsl
index f8efb9a..fe7b867 100644
--- a/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c32905.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c32905() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_c32905();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c32905() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c32905();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.glsl
index 0b65b9e..4282dbf 100644
--- a/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c35268.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
 void textureStore_c35268() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 void main() {
   textureStore_c35268();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
 void textureStore_c35268() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), uvec4(1u));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c35268();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.glsl
index bda6b4e..907c457 100644
--- a/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c9d780.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_c9d780() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_c9d780();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_c9d780() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f).zyxw);
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c9d780();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.glsl
index 69341b0..f24a0ce 100644
--- a/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/cb3b0b.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_cb3b0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_cb3b0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.glsl
index 3007f1f..30cb592 100644
--- a/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/cd6755.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_cd6755() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_cd6755();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_cd6755() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_cd6755();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.glsl
index 3d2f1d8..adfa11c 100644
--- a/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ceb832.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
 void textureStore_ceb832() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 void main() {
   textureStore_ceb832();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
 void textureStore_ceb832() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ceb832();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.glsl
index 07cc099..e6e626c 100644
--- a/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_d26166() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 void main() {
   textureStore_d26166();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_d26166() {
-  imageStore(arg_0, uvec2(1u, 0u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d26166();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.glsl
index 44c9b42..4810cef 100644
--- a/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d2b565.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d2b565() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_d2b565();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d2b565() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d2b565();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.glsl
index c05fbfe..1dce17e 100644
--- a/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d4aa95.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d4aa95() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 void main() {
   textureStore_d4aa95();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d4aa95() {
-  imageStore(arg_0, uvec3(1u), uvec4(1u));
+  imageStore(arg_0, ivec3(uvec3(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d4aa95();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.glsl
index 21aed65..95152ae 100644
--- a/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d55e65.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_d55e65() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_d55e65();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_d55e65() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d55e65();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.glsl
index ffaa641..0d6a82a 100644
--- a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_d82b0a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d82b0a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.glsl
index 8afbae2..9bd171a 100644
--- a/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/db92a2.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_db92a2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_db92a2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.glsl
index 1e1f2fd..b5a7cea 100644
--- a/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dce0e2.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
 void textureStore_dce0e2() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_dce0e2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
 void textureStore_dce0e2() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_dce0e2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.glsl
index 9265680..58a3575 100644
--- a/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_de4b94() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 void main() {
   textureStore_de4b94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_de4b94() {
-  imageStore(arg_0, uvec2(1u, 0u), ivec4(1));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_de4b94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.glsl
index 2f05fd7..75ca8dc 100644
--- a/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/df0c51.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp iimage3D arg_0;
 void textureStore_df0c51() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_df0c51();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage3D arg_0;
 void textureStore_df0c51() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_df0c51();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.glsl
index f8d3345..5c97156 100644
--- a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 void main() {
   textureStore_dfa9a1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_dfa9a1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.glsl
index 609e68b..4bebc1d 100644
--- a/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e38281.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_e38281() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f).zyxw);
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f).zyxw);
 }
 void main() {
   textureStore_e38281();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_e38281() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f).zyxw);
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f).zyxw);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e38281();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.glsl
index ba6a7dd..57aea7c 100644
--- a/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e7c6d8() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 void main() {
   textureStore_e7c6d8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_e7c6d8() {
-  imageStore(arg_0, uvec2(1u, 0u), vec4(1.0f));
+  imageStore(arg_0, ivec2(uvec2(1u, 0u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e7c6d8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.glsl
index 7179a5f..4f128d4 100644
--- a/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e8cbf7.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 void main() {
   textureStore_e8cbf7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
-  imageStore(arg_0, uvec2(1u), uvec4(1u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e8cbf7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.glsl
index a5efe0b..c0a7aff 100644
--- a/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ea30d2.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
 void textureStore_ea30d2() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 void main() {
   textureStore_ea30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
 void textureStore_ea30d2() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1)), ivec4(1));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ea30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.glsl
index 8404689..75b521e 100644
--- a/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/f1e6d3.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 void main() {
   textureStore_f1e6d3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
-  imageStore(arg_0, uvec3(1u), ivec4(1));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f1e6d3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/f7b0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/f7b0ab.wgsl.expected.ir.glsl
index 11c43f9..d195fb1 100644
--- a/test/tint/builtins/gen/literal/textureStore/f7b0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/f7b0ab.wgsl.expected.ir.glsl
@@ -1,39 +1,23 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
 void textureStore_f7b0ab() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_f7b0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
 void textureStore_f7b0ab() {
-  imageStore(arg_0, uvec3(uvec2(1u), uint(1u)), vec4(1.0f));
+  ivec2 v = ivec2(uvec2(1u));
+  imageStore(arg_0, ivec3(v, int(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f7b0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.glsl
index 334adad..417d159 100644
--- a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.ir.glsl
@@ -1,39 +1,21 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
 
 layout(binding = 0, rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 void main() {
   textureStore_fcbe66();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  imageStore(arg_0, uvec3(1u), vec4(1.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_fcbe66();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:5: 'imageStore' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.glsl
index eec9d94..d24a5ef 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_0148bd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0148bd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.glsl
index 7afc258..f585da2 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_07548b() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_07548b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_07548b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.glsl
index 6dbb0d9..e769f3f 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_0a1a79();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0a1a79();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.glsl
index f39af5d..84a6f8b 100644
--- a/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0ade9a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_0ade9a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0ade9a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.glsl
index 838358b..08b879c 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_0cc825();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0cc825();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.glsl
index 1c7b3b5..943782c 100644
--- a/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0ff97a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_0ff97a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_0ff97a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.glsl
index b14a60a..ec946e3 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_158cf0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_158cf0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.glsl
index cdab07b..7fb3736 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_1839f2() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_1839f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1839f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.glsl
index 558eae7..7540ddf 100644
--- a/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1a6c0b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_1a6c0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1a6c0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.glsl
index be8aa9f..bd946ff 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_1a7d35();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1a7d35();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.glsl
index d5fa6ff..6b646bf 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_1dc954();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1dc954();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.glsl
index 0702d62..a70bd2d 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_1e20f2() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_1e20f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1e20f2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.glsl
index 628e2cc..7b2500d 100644
--- a/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1e9fbd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_1e9fbd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1e9fbd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.glsl
index 4f83e9e..896f511 100644
--- a/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1efc36.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_1efc36() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_1efc36();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_1efc36() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1efc36();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.glsl
index d6d88fd..63c2c4c 100644
--- a/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1fef04.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_1fef04();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_1fef04();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.glsl
index 739bb22..aafc713 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_207fdd() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_207fdd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_207fdd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.glsl
index cf82f84..4b40101 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_2383fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2383fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.glsl
index b82f07f..f917f8a 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_258ab0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_258ab0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.glsl
index c75627c..bbd9075 100644
--- a/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/27063a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3.zyxw;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_27063a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3.zyxw;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_27063a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.glsl
index ba93b53..731f6f1 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_285218();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_285218();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.glsl
index 8f92a74..47324d0 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_28a7ec();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_28a7ec();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.glsl
index 0b31966..bc30293 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_2d2835();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2d2835();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.glsl
index b49bb0c..7f2b341 100644
--- a/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2e512f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_2e512f() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_2e512f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
 void textureStore_2e512f() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2e512f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.glsl
index fd3e53b..38b9068 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_2e6102() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_2e6102();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_2e6102();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.glsl
index 9613484..cfec559 100644
--- a/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/32d3d6.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_32d3d6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_32d3d6();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.glsl
index a8e4b5c..7d6c266 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_330b7c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_330b7c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.glsl
index 344281b..190e192 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_33cec0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_33cec0();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.glsl
index 82158bd..1c59366 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_37ffd4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_37ffd4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.glsl
index d353b86..6b65172 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_3c1937();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3c1937();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.glsl
index 8954863..b895c2e 100644
--- a/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3d1ebe.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_3d1ebe() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_3d1ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
 void textureStore_3d1ebe() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3d1ebe();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.glsl
index 3692e46..3cfcbfb 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_3d6f01();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3d6f01();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.glsl
index 82354a9..09db764 100644
--- a/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_3fb31f() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_3fb31f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_3fb31f() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_3fb31f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.glsl
index 28dc96d..8357f50 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_40c455() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_40c455();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_40c455();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.glsl
index d5b3a06..524ea4f 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_4288fc() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_4288fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4288fc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.glsl
index 31e921c..3f2f113 100644
--- a/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/473ead.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_473ead() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_473ead();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage3D arg_0;
 void textureStore_473ead() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_473ead();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.glsl
index f4d917e..a3365cc 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_486500() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_486500();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_486500();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.glsl
index c2bf269..e1fea86 100644
--- a/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4bf1fd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_4bf1fd() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_4bf1fd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2D arg_0;
 void textureStore_4bf1fd() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4bf1fd();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.glsl
index 00a128d..55add24 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_4c454f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4c454f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.glsl
index 904848f..26e190d 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_4d359d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_4d359d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.glsl
index ce85a17..a03e2f4 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_506a71() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_506a71();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_506a71();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.glsl
index 1a804ac..fb1353f 100644
--- a/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5246b4.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_5246b4() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_5246b4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage3D arg_0;
 void textureStore_5246b4() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5246b4();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.glsl
index dc2aeb6..fe4a078 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_52f503() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_52f503();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_52f503();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.glsl
index a39b109..46b60b1 100644
--- a/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/574a31.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_574a31();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_574a31();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.glsl
index 900d83e..b441978 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_5841f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5841f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.glsl
index 32e091d..285fe87 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_59a0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_59a0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.glsl
index 7814937..11cc8f1 100644
--- a/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5b17eb.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_5b17eb() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_5b17eb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
 void textureStore_5b17eb() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5b17eb();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.glsl
index 83325fe..a9238c9 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_5bc4f3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5bc4f3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.glsl
index 9b4c9f7..8b15511 100644
--- a/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5ec6b2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_5ec6b2() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_5ec6b2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image3D arg_0;
 void textureStore_5ec6b2() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5ec6b2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.glsl
index 63152c5..db983d1 100644
--- a/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5ee194.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_5ee194();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5ee194();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.glsl
index 47f1ae0..0624095 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_5f9a49();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_5f9a49();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.glsl
index 6a4dea0..1627dd3 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_602b5a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_602b5a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.glsl
index 8d2307d..e578137 100644
--- a/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/635584.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_635584();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_635584();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.glsl
index 0210e27..b2f6476 100644
--- a/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/63f34a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_63f34a() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_63f34a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2D arg_0;
 void textureStore_63f34a() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_63f34a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.glsl
index 28f94de..c81fa27 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_699a1b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_699a1b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.glsl
index 6833c0b..0a89148 100644
--- a/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6c4a70.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_6c4a70() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_6c4a70();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2D arg_0;
 void textureStore_6c4a70() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6c4a70();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.glsl
index 0f665f4..ca6be18 100644
--- a/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6f0c92.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_6f0c92();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6f0c92();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.glsl
index bf2a4f8..4fb1c18 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_6f8642();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6f8642();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/6fd2b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/6fd2b1.wgsl.expected.ir.glsl
index 24d0c24..14022cf 100644
--- a/test/tint/builtins/gen/var/textureStore/6fd2b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6fd2b1.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_6fd2b1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_6fd2b1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.glsl
index 1b84922..94861dc 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_726472() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_726472();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_726472();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.glsl
index 4a6061a..7dbafac 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_72fa64();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_72fa64();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.glsl
index 522ff23..11a9e58 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_73bbbc() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_73bbbc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_73bbbc();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.glsl
index f9a43a0..cfb4ae0 100644
--- a/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7792fa.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_7792fa() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_7792fa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage3D arg_0;
 void textureStore_7792fa() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7792fa();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.glsl
index b6ea346..afcacd1 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_779d14();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_779d14();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.glsl
index 6904c03..83669f2 100644
--- a/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7b8f86.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_7b8f86() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_7b8f86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image3D arg_0;
 void textureStore_7b8f86() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7b8f86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.glsl
index 224695c..d2b5f42 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_7cf6e7() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_7cf6e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_7cf6e7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.glsl
index baaa6f9..5119184 100644
--- a/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/803a10.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_803a10() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_803a10();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image3D arg_0;
 void textureStore_803a10() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_803a10();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.glsl
index 3c6fb4b..8bc0bc2 100644
--- a/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8a8681.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_8a8681() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_8a8681();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
 void textureStore_8a8681() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8a8681();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.glsl
index ebbb670..17c4a06 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_8b9310() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_8b9310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8b9310();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.glsl
index 8469a11..5ad8b7c 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_8bb287();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8bb287();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.glsl
index dfc2406..8b50c99 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_8c76e9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8c76e9();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8cd611.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8cd611.wgsl.expected.ir.glsl
index 0a5b93f..3190eac 100644
--- a/test/tint/builtins/gen/var/textureStore/8cd611.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8cd611.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_8cd611() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_8cd611();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image3D arg_0;
 void textureStore_8cd611() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8cd611();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.glsl
index 0290ee5..e7fab8f 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_8dc54f() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_8dc54f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8dc54f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.glsl
index 8fe01e2..d926615 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_8ed9f8() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_8ed9f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_8ed9f8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.glsl
index 878ce96..ebca923 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_958353();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_958353();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.glsl
index ebd6fe2..de634cc 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_959d94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8_snorm) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_959d94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.glsl
index 3c92779..c14e25e 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_95e452() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_95e452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_95e452();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.glsl
index 976a93f..81cafce 100644
--- a/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9aedd3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_9aedd3() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_9aedd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_9aedd3() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9aedd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/9e5bc2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/9e5bc2.wgsl.expected.ir.glsl
index d69a5ed..7d83803 100644
--- a/test/tint/builtins/gen/var/textureStore/9e5bc2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9e5bc2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_9e5bc2() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_9e5bc2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2D arg_0;
 void textureStore_9e5bc2() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9e5bc2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.glsl
index 4557cad..45559b3 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_9f5318() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_9f5318();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_9f5318();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.glsl
index 204dc88..d9f3a71 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_a0f96e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a0f96e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.glsl
index b94e523..a41187f 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_a1352c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a1352c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.glsl
index 33dd13a..ef83969c 100644
--- a/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a165b8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_a165b8() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_a165b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_a165b8() {
   uvec2 arg_1 = uvec2(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2.zyxw);
+  vec4 v = arg_2.zyxw;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a165b8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.glsl
index d33c134..b9164f0 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_a4c338();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a4c338();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.glsl
index 674dbf4..c7331c0 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_a5e80d() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_a5e80d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a5e80d();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.glsl
index 59ce347..8ad9b6d 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_a6a986();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a6a986();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.glsl
index b2f23c1..59479c0 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_a6e78f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a6e78f();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.glsl
index d834338..c82d1b4 100644
--- a/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a7fc47.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_a7fc47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a7fc47();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.glsl
index 17691e8..9ebd44d 100644
--- a/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a9298c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_a9298c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a9298c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.glsl
index 5cb704b..c8c8790 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_a9426c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_a9426c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.glsl
index f8305ea..ab93fe0 100644
--- a/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/abdd21.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_abdd21();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_abdd21();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.glsl
index daa7817..e2d422a 100644
--- a/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ae6a2a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_ae6a2a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ae6a2a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.glsl
index 31860d2..27a89cf 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_aeb38a() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_aeb38a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_aeb38a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.glsl
index e6b9734..fa1929f 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_b42fd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b42fd3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.glsl
index 854b66d..e1dbc2f 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_b70ded();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b70ded();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.glsl
index 97fdf11..7a71e83 100644
--- a/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b71c13.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_b71c13();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b71c13();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.glsl
index 60866ab..0d40b12 100644
--- a/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b7232c.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_b7232c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b7232c();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.glsl
index a77a393..7b82396 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_b76ff3() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_b76ff3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
   uvec2 arg_1 = uvec2(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b76ff3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.glsl
index ad134b3..1dbbeb4 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_b77161();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp writeonly uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b77161();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/b91b86.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/b91b86.wgsl.expected.ir.glsl
index 1921a39..ab01805 100644
--- a/test/tint/builtins/gen/var/textureStore/b91b86.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b91b86.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_b91b86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_b91b86();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.glsl
index 1e0740a..f3f1910 100644
--- a/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/bd6602.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_bd6602();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32ui) uniform highp uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_bd6602();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.glsl
index 466ec74..7107fff 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_c1f29e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c1f29e();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.glsl
index 2c1bb25..449b2d8 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_c2ca46();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c2ca46();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.glsl
index 9dc3076..0397a73 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_c32905();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c32905();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.glsl
index 294c649..cb4a436 100644
--- a/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c35268.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_c35268();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp uimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   uvec4 arg_3 = uvec4(1u);
-  uvec2 v = arg_1;
+  int v = arg_2;
   uvec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c35268();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.glsl
index 4c27b71..eba8443 100644
--- a/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c9d780.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2.zyxw;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_c9d780();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2.zyxw;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_c9d780();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.glsl
index be1b90d..7c9a5e3 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_cb3b0b() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_cb3b0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_cb3b0b();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.glsl
index c1762fd..2ba9950 100644
--- a/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/cd6755.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_cd6755() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_cd6755();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_cd6755() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_cd6755();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.glsl
index 66b6dd8..7fdb8a1 100644
--- a/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ceb832.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_ceb832();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ceb832();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.glsl
index 110a8bc..9c24d2b 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_d26166();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   uvec4 arg_2 = uvec4(1u);
   uvec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d26166();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.glsl
index fddef0f4..f3861a3 100644
--- a/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d2b565.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_d2b565() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_d2b565();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d2b565() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d2b565();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.glsl
index 8e16a85..849271a 100644
--- a/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d4aa95.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_d4aa95() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_d4aa95();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_d4aa95() {
   uvec3 arg_1 = uvec3(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d4aa95();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.glsl
index 17371b0..09b1fd3 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_d55e65();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d55e65();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.glsl
index 7acfd7a..a5327ca 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_d82b0a() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_d82b0a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_d82b0a();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.glsl
index 945edbe..66b8db1 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_db92a2() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_db92a2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_db92a2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.glsl
index abb4d98..0f1dfca 100644
--- a/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dce0e2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_dce0e2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32f) uniform highp image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_dce0e2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.glsl
index 383e2f9..306dd4e 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_de4b94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   ivec4 arg_2 = ivec4(1);
   ivec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_de4b94();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.glsl
index 67a492d..560e03f 100644
--- a/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/df0c51.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_df0c51() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_df0c51();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp iimage3D arg_0;
 void textureStore_df0c51() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_df0c51();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.glsl
index 9393a9e..32d2aa7 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_dfa9a1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  int v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_dfa9a1();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.glsl
index 7b6f147..fbf0203 100644
--- a/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e38281.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3.zyxw;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_e38281();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3.zyxw;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e38281();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.glsl
index a1519f3..6c8235b 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -9,18 +7,11 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 void main() {
   textureStore_e7c6d8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, rgba8) uniform highp writeonly image2D arg_0;
@@ -28,18 +19,9 @@
   uint arg_1 = 1u;
   vec4 arg_2 = vec4(1.0f);
   vec4 v = arg_2;
-  imageStore(arg_0, uvec2(arg_1, 0u), v);
+  imageStore(arg_0, ivec2(uvec2(arg_1, 0u)), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e7c6d8();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'imageStore' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.glsl
index b8b57f5..bd40a54 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_e8cbf7() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 void main() {
   textureStore_e8cbf7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
   uvec2 arg_1 = uvec2(1u);
   uvec4 arg_2 = uvec4(1u);
-  imageStore(arg_0, arg_1, arg_2);
+  uvec4 v = arg_2;
+  imageStore(arg_0, ivec2(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_e8cbf7();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.glsl
index 3e15ab4..74087f0 100644
--- a/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ea30d2.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: INVALID
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_ea30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32i) uniform highp iimage2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
   ivec4 arg_3 = ivec4(1);
-  uvec2 v = arg_1;
+  int v = arg_2;
   ivec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_ea30d2();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.glsl
index 8b59b71..1a6b86e 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_f1e6d3() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_f1e6d3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 layout(binding = 0, r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
   uvec3 arg_1 = uvec3(1u);
   ivec4 arg_2 = ivec4(1);
-  imageStore(arg_0, arg_1, arg_2);
+  ivec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f1e6d3();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/f7b0ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/f7b0ab.wgsl.expected.ir.glsl
index 016a20a..47c18de 100644
--- a/test/tint/builtins/gen/var/textureStore/f7b0ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f7b0ab.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -9,20 +7,14 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 void main() {
   textureStore_f7b0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'imageStore' : no matching overloaded function found 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, r8) uniform highp writeonly image2DArray arg_0;
@@ -30,20 +22,12 @@
   uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
   vec4 arg_3 = vec4(1.0f);
-  uvec2 v = arg_1;
+  uint v = arg_2;
   vec4 v_1 = arg_3;
-  imageStore(arg_0, uvec3(v, uint(arg_2)), v_1);
+  ivec2 v_2 = ivec2(arg_1);
+  imageStore(arg_0, ivec3(v_2, int(v)), v_1);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_f7b0ab();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'imageStore' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.glsl
index 5a36c95..9088200 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 460
 precision highp float;
 precision highp int;
@@ -8,36 +6,22 @@
 void textureStore_fcbe66() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 void main() {
   textureStore_fcbe66();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'imageStore' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 460
 
 layout(binding = 0, rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
   uvec3 arg_1 = uvec3(1u);
   vec4 arg_2 = vec4(1.0f);
-  imageStore(arg_0, arg_1, arg_2);
+  vec4 v = arg_2;
+  imageStore(arg_0, ivec3(arg_1), v);
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   textureStore_fcbe66();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
