diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl
index 1e8d94b..1f06dce 100644
--- a/test/tint/benchmark/particles.wgsl.expected.glsl
+++ b/test/tint/benchmark/particles.wgsl.expected.glsl
@@ -7,12 +7,16 @@
 layout(location = 2) in vec2 quad_pos_1;
 layout(location = 0) out vec4 color_2;
 layout(location = 1) out vec2 quad_pos_2;
-layout(binding = 0, std140) uniform RenderParams_ubo {
+struct RenderParams {
   mat4 modelViewProjectionMatrix;
   vec3 right;
   uint pad;
   vec3 up;
   uint pad_1;
+};
+
+layout(binding = 0, std140) uniform render_params_block_ubo {
+  RenderParams inner;
 } render_params;
 
 struct VertexInput {
@@ -44,10 +48,10 @@
 };
 
 VertexOutput vs_main(VertexInput tint_symbol) {
-  vec3 quad_pos = (mat2x3(render_params.right, render_params.up) * tint_symbol.quad_pos);
+  vec3 quad_pos = (mat2x3(render_params.inner.right, render_params.inner.up) * tint_symbol.quad_pos);
   vec3 position = (tint_symbol.position + (quad_pos * 0.01f));
   VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec2(0.0f, 0.0f));
-  tint_symbol_1.position = (render_params.modelViewProjectionMatrix * vec4(position, 1.0f));
+  tint_symbol_1.position = (render_params.inner.modelViewProjectionMatrix * vec4(position, 1.0f));
   tint_symbol_1.color = tint_symbol.color;
   tint_symbol_1.quad_pos = tint_symbol.quad_pos;
   return tint_symbol_1;
@@ -143,6 +147,14 @@
   vec2 quad_pos;
 };
 
+struct SimulationParams {
+  float deltaTime;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
+  vec4 seed;
+};
+
 struct Particle {
   vec3 position;
   float lifetime;
@@ -151,12 +163,8 @@
   uint pad_3;
 };
 
-layout(binding = 0, std140) uniform SimulationParams_ubo {
-  float deltaTime;
-  uint pad;
-  uint pad_1;
-  uint pad_2;
-  vec4 seed;
+layout(binding = 0, std140) uniform sim_params_block_ubo {
+  SimulationParams inner;
 } sim_params;
 
 layout(binding = 1, std430) buffer Particles_ssbo {
@@ -167,20 +175,27 @@
   uint width;
 };
 
-uniform highp sampler2D tint_symbol_6;
+void assign_and_preserve_padding_data_particles_X(uint dest[1], Particle value) {
+  data.particles[dest[0]].position = value.position;
+  data.particles[dest[0]].lifetime = value.lifetime;
+  data.particles[dest[0]].color = value.color;
+  data.particles[dest[0]].velocity = value.velocity;
+}
+
+uniform highp sampler2D tint_symbol_2_1;
 void simulate(uvec3 GlobalInvocationID) {
-  rand_seed = ((sim_params.seed.xy + vec2(GlobalInvocationID.xy)) * sim_params.seed.zw);
+  rand_seed = ((sim_params.inner.seed.xy + vec2(GlobalInvocationID.xy)) * sim_params.inner.seed.zw);
   uint idx = GlobalInvocationID.x;
   Particle particle = data.particles[idx];
-  particle.velocity.z = (particle.velocity.z - (sim_params.deltaTime * 0.5f));
-  particle.position = (particle.position + (sim_params.deltaTime * particle.velocity));
-  particle.lifetime = (particle.lifetime - sim_params.deltaTime);
+  particle.velocity.z = (particle.velocity.z - (sim_params.inner.deltaTime * 0.5f));
+  particle.position = (particle.position + (sim_params.inner.deltaTime * particle.velocity));
+  particle.lifetime = (particle.lifetime - sim_params.inner.deltaTime);
   particle.color.a = smoothstep(0.0f, 0.5f, particle.lifetime);
   if ((particle.lifetime < 0.0f)) {
     uvec2 coord = uvec2(0u);
     {
-      for(uint level = (uint(textureQueryLevels(tint_symbol_6)) - 1u); (level > 0u); level = (level - 1u)) {
-        vec4 probabilites = texelFetch(tint_symbol_6, ivec2(coord), int(level));
+      for(uint level = (uint(textureQueryLevels(tint_symbol_2_1)) - 1u); (level > 0u); level = (level - 1u)) {
+        vec4 probabilites = texelFetch(tint_symbol_2_1, ivec2(coord), int(level));
         float tint_symbol_5 = rand();
         vec4 value = vec4(tint_symbol_5);
         bvec4 mask = bvec4(uvec4(greaterThanEqual(value, vec4(0.0f, probabilites.xyz))) & uvec4(lessThan(value, probabilites)));
@@ -189,19 +204,20 @@
         coord.y = (coord.y + (any(mask.zw) ? 1u : 0u));
       }
     }
-    vec2 uv = (vec2(coord) / vec2(uvec2(textureSize(tint_symbol_6, 0))));
+    vec2 uv = (vec2(coord) / vec2(uvec2(textureSize(tint_symbol_2_1, 0))));
     particle.position = vec3((((uv - 0.5f) * 3.0f) * vec2(1.0f, -1.0f)), 0.0f);
-    particle.color = texelFetch(tint_symbol_6, ivec2(coord), 0);
+    particle.color = texelFetch(tint_symbol_2_1, ivec2(coord), 0);
+    float tint_symbol = rand();
+    particle.velocity.x = ((tint_symbol - 0.5f) * 0.100000001f);
     float tint_symbol_1 = rand();
-    particle.velocity.x = ((tint_symbol_1 - 0.5f) * 0.100000001f);
-    float tint_symbol_2 = rand();
-    particle.velocity.y = ((tint_symbol_2 - 0.5f) * 0.100000001f);
+    particle.velocity.y = ((tint_symbol_1 - 0.5f) * 0.100000001f);
     float tint_symbol_3 = rand();
     particle.velocity.z = (tint_symbol_3 * 0.300000012f);
     float tint_symbol_4 = rand();
     particle.lifetime = (0.5f + (tint_symbol_4 * 2.0f));
   }
-  data.particles[idx] = particle;
+  uint tint_symbol_6[1] = uint[1](idx);
+  assign_and_preserve_padding_data_particles_X(tint_symbol_6, particle);
 }
 
 layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
@@ -210,8 +226,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:64: '' : compilation terminated 
+ERROR: 0:75: 'textureQueryLevels' : no matching overloaded function found
+ERROR: 0:75: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -248,11 +264,15 @@
   vec3 velocity;
 };
 
-layout(binding = 3, std140) uniform UBO_ubo {
+struct UBO {
   uint width;
   uint pad;
   uint pad_1;
   uint pad_2;
+};
+
+layout(binding = 3, std140) uniform ubo_block_ubo {
+  UBO inner;
 } ubo;
 
 layout(binding = 4, std430) buffer Buffer_ssbo {
@@ -265,7 +285,7 @@
 
 uniform highp sampler2D tex_in_1;
 void import_level(uvec3 coord) {
-  uint offset = (coord.x + (coord.y * ubo.width));
+  uint offset = (coord.x + (coord.y * ubo.inner.width));
   buf_out.weights[offset] = texelFetch(tex_in_1, ivec2(coord.xy), 0).w;
 }
 
@@ -306,11 +326,15 @@
   vec3 velocity;
 };
 
-layout(binding = 3, std140) uniform UBO_ubo {
+struct UBO {
   uint width;
   uint pad;
   uint pad_1;
   uint pad_2;
+};
+
+layout(binding = 3, std140) uniform ubo_block_ubo {
+  UBO inner;
 } ubo;
 
 layout(binding = 4, std430) buffer Buffer_ssbo {
@@ -324,15 +348,15 @@
 layout(rgba8) uniform highp writeonly image2D tex_out;
 void export_level(uvec3 coord) {
   if (all(lessThan(coord.xy, uvec2(uvec2(imageSize(tex_out)))))) {
-    uint dst_offset = (coord.x + (coord.y * ubo.width));
-    uint src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.width));
-    float a = buf_in.weights[(src_offset + 0u)];
+    uint dst_offset = (coord.x + (coord.y * ubo.inner.width));
+    uint src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.inner.width));
+    float a_1 = buf_in.weights[(src_offset + 0u)];
     float b = buf_in.weights[(src_offset + 1u)];
-    float c = buf_in.weights[((src_offset + 0u) + ubo.width)];
-    float d = buf_in.weights[((src_offset + 1u) + ubo.width)];
-    float sum = dot(vec4(a, b, c, d), vec4(1.0f));
+    float c = buf_in.weights[((src_offset + 0u) + ubo.inner.width)];
+    float d = buf_in.weights[((src_offset + 1u) + ubo.inner.width)];
+    float sum = dot(vec4(a_1, b, c, d), vec4(1.0f));
     buf_out.weights[dst_offset] = (sum / 4.0f);
-    vec4 probabilities = (vec4(a, (a + b), ((a + b) + c), sum) / max(sum, 0.0001f));
+    vec4 probabilities = (vec4(a_1, (a_1 + b), ((a_1 + b) + c), sum) / max(sum, 0.0001f));
     imageStore(tex_out, ivec2(coord.xy), probabilities);
   }
 }
diff --git a/test/tint/bug/tint/749.spvasm.expected.glsl b/test/tint/bug/tint/749.spvasm.expected.glsl
index ffd5710..2c170a6 100644
--- a/test/tint/bug/tint/749.spvasm.expected.glsl
+++ b/test/tint/bug/tint/749.spvasm.expected.glsl
@@ -6,6 +6,7 @@
 }
 
 struct buf0 {
+  /* @offset(0) */
   resolution : vec2<f32>,
 }
 
diff --git a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
index e7ccd0b..714eae0 100644
--- a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
index bccd8f9..842c357 100644
--- a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
index 032fe34..15d0f89 100644
--- a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
index e22bd90..63508bd 100644
--- a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
index 4d3f177..a998ff3 100644
--- a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 0.0);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
index 32ae841..bce8ff4 100644
--- a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
index ba57a13..01681ea 100644
--- a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
index 0ab379a..482f379 100644
--- a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
index 58ea7cf..79a9a50 100644
--- a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
index b4697af..87c676f 100644
--- a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  ivec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
index 09738fa..5c9ba97 100644
--- a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
index db13502..ad11387 100644
--- a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), int(1u));
+  vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
index 40eaec4..f720f70 100644
--- a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1u)), int(1u));
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
index f8eed5e..fd1cea5 100644
--- a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  uvec4 res = textureGather(arg_1_arg_2, vec4(0.0f, 0.0f, 0.0f, float(1)), 1);
+  uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
index c7efa64..0d6155f 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
index be729a0..991d793 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec4 res = textureGather(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
index 221c6b6..8baec25 100644
--- a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_4703d0() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
index a7f643c..25e8a68 100644
--- a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSample_4dd1bf() {
-  vec4 res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)));
+  vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
index ea3660f..a68ee24 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_60bf45() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
index 4871559..db08545 100644
--- a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSample_7fd8cb() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 0.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
index 9007344..daf390f 100644
--- a/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSample_bc7477() {
-  vec4 res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)));
+  vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
index a3e7932..bdf506d 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSample_c2f4e8() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 0.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
index 3338dd1..c0fd5d1 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleBias_c6953d() {
-  vec4 res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
index ae01821..50f039d 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleBias_eed7c4() {
-  vec4 res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
index 623232f..978805e 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_1912e5() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
index 0a1dfc3..d5e3a67 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_7b5025() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
index 870eca9..051c0c8 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_a3ca7e() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
index e20d8bf..04fc31f 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_af1051() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index 5037142..63af8d1 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
index 9385379..3e367b5 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  float res = texture(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
index 04915fc..8cead6f 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
index b5df2f6..217eb75 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  float res = textureOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 1.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
index 0123ec3..e72a4c4 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
index 43f6aad..33fc8ac 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec4 res = textureGrad(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), vec3(0.0f), vec3(0.0f));
+  vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
index 22a75bf..cb8357c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
index 7d733ee..257102d 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
index 377cb1b..b185131 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
index d2d5df8..9baf6b8 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
index 1010584..adfd962 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
index 6c1e027..4c73009 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
index ecf8622..9b99c65 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
index 8eff1cb..6019b3c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
index 774f102..598fdcd 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
index 278f53a..ad32382 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
index 71141d5..3bb1d52 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec4 res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), 1.0f);
+  vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
index 7c367c4..cc79d05 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
index 2e11ac2..2989c0e 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, 0.0f), float(1u));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
index db5abed..b6a33e0 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1u), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
index 203b99a..22db161 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  float res = textureLodOffset(arg_0_arg_1, vec4(0.0f, 0.0f, float(1u), 0.0f), float(1), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
index dd5a844..8cf3126 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
 }
 
 vec4 vertex_main() {
@@ -34,7 +34,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
 }
 
 void fragment_main() {
@@ -57,7 +57,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  float res = textureLod(arg_0_arg_1, vec4(0.0f, 0.0f, 0.0f, float(1u)), float(1));
+  float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
index 855df0f..02179c8 100644
--- a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0), vec4(0.0f));
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0), vec4(0.0f));
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0), vec4(0.0f));
+  imageStore(arg_0, ivec2(1), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.glsl
index 0951b51..c78f285 100644
--- a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.glsl
index 9023bec..874e204 100644
--- a/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/1dc954.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
index 7c2a380..a93d203 100644
--- a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0), ivec4(0));
+  imageStore(arg_0, ivec3(1), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0), ivec4(0));
+  imageStore(arg_0, ivec3(1), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0), ivec4(0));
+  imageStore(arg_0, ivec3(1), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.glsl
index 2aea958..2c24579 100644
--- a/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/285218.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.glsl
index f268014..2f68d86 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
index b53dc33..a307eae 100644
--- a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.glsl
index 2564492..d39c865 100644
--- a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.glsl
index 2500adf..56f90f3 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
index a475f22..36dda83 100644
--- a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0), ivec4(0));
+  imageStore(arg_0, ivec2(1), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0), ivec4(0));
+  imageStore(arg_0, ivec2(1), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0), ivec4(0));
+  imageStore(arg_0, ivec2(1), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.glsl
index 8f0f990..ca1c1f1 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.glsl
index 2f70fdd..4e8eebd 100644
--- a/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3c1937.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
index 1e279f2..7fca5f4 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
index 6fe291b..567bc86 100644
--- a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
index b1e3929..6bdb8e2 100644
--- a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
index d8e3510..75e20e2 100644
--- a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  imageStore(arg_0, ivec2(uvec2(0u)), uvec4(0u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  imageStore(arg_0, ivec2(uvec2(0u)), uvec4(0u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  imageStore(arg_0, ivec2(uvec2(0u)), uvec4(0u));
+  imageStore(arg_0, ivec2(uvec2(1u)), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.glsl
index 1880046..5dea1f9 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
index 161d80f..8a2245b 100644
--- a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, 1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), 1u)), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
index f342c66..c8ad73a 100644
--- a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
index 0724c65..b696272 100644
--- a/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
index 8b99c50..08c8688 100644
--- a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0), uvec4(0u));
+  imageStore(arg_0, ivec2(1), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0), uvec4(0u));
+  imageStore(arg_0, ivec2(1), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0), uvec4(0u));
+  imageStore(arg_0, ivec2(1), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.glsl
index 8d8e53f..7ea0dca 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.glsl
index 74eaa9f..af65051 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
index 812e349..b916425 100644
--- a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  imageStore(arg_0, ivec2(uvec2(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  imageStore(arg_0, ivec2(uvec2(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  imageStore(arg_0, ivec2(uvec2(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec2(uvec2(1u)), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
index 9b394c8..ca9911c 100644
--- a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
index 12f9790..572187a 100644
--- a/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.glsl
index 33a010e..bf5d1af 100644
--- a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
index b3342f8..c3e21ed 100644
--- a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
index 3feee78..b6b9982 100644
--- a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.glsl
index 2a19ced..80ed6ae 100644
--- a/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/8c76e9.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.glsl
index 2c0a360..c381fc1 100644
--- a/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/958353.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.glsl
index dd1193b..3603c31 100644
--- a/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/959d94.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.glsl
index 793221f..4697574 100644
--- a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
index 260128a..5d8afd9 100644
--- a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  imageStore(arg_0, ivec2(uvec2(0u)), ivec4(0));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  imageStore(arg_0, ivec2(uvec2(0u)), ivec4(0));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  imageStore(arg_0, ivec2(uvec2(0u)), ivec4(0));
+  imageStore(arg_0, ivec2(uvec2(1u)), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.glsl
index d0953bc..b0db4ff 100644
--- a/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a4c338.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.glsl
index 04b7a84..ec339e9 100644
--- a/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/a6e78f.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
index 5662bc9..ca4082b 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0), uvec4(0u));
+  imageStore(arg_0, ivec3(1), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0), uvec4(0u));
+  imageStore(arg_0, ivec3(1), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0), uvec4(0u));
+  imageStore(arg_0, ivec3(1), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.glsl
index cd77fcd..b9541c4 100644
--- a/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b70ded.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
index 1ac7ccd..b45770f 100644
--- a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.glsl
index 892ebea..69290d0 100644
--- a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.glsl
index 9f4f693..4e36824 100644
--- a/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c1f29e.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
index fb070a6..a75087a 100644
--- a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f));
+  imageStore(arg_0, ivec3(ivec2(1), 1), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.glsl
index ac9e79c..8b95894 100644
--- a/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d26166.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
-  imageStore(arg_0, int(1u), uvec4(0u));
+  imageStore(arg_0, int(1u), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
index 494b6a2..c22e0af 100644
--- a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0));
+  imageStore(arg_0, 1, ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
index 6baa1cd..f12a334 100644
--- a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  imageStore(arg_0, ivec3(uvec3(0u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  imageStore(arg_0, ivec3(uvec3(0u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  imageStore(arg_0, ivec3(uvec3(0u)), ivec4(0));
+  imageStore(arg_0, ivec3(uvec3(1u)), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
index cff2439..48d3770 100644
--- a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), 1), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.glsl
index 83e4696..7b68c04 100644
--- a/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/de4b94.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
-  imageStore(arg_0, int(1u), ivec4(0));
+  imageStore(arg_0, int(1u), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
index abd5457..40ed60c 100644
--- a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  imageStore(arg_0, ivec3(uvec3(0u, 0u, uint(1))), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(uvec2(1u), uint(1))), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
index 1f48bf2..e12b601 100644
--- a/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  imageStore(arg_0, ivec3(0, 0, int(1u)), uvec4(0u));
+  imageStore(arg_0, ivec3(ivec2(1), int(1u)), uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.glsl
index 9943f8b..95f7505 100644
--- a/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e7c6d8.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
-  imageStore(arg_0, int(1u), vec4(0.0f));
+  imageStore(arg_0, int(1u), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.glsl
index b537ea3..7d76c5a 100644
--- a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f));
+  imageStore(arg_0, 1, vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
index b22d596..4e2d552 100644
--- a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0), vec4(0.0f));
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0), vec4(0.0f));
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0), vec4(0.0f));
+  imageStore(arg_0, ivec3(1), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
index da09ede..1b33331 100644
--- a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0));
+  imageStore(arg_0, ivec3(ivec2(1), 1), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.glsl
index 9583078..7a0cd4d 100644
--- a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void fragment_main() {
@@ -56,7 +56,7 @@
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u));
+  imageStore(arg_0, 1, uvec4(1u));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
index 87b611e..eceabec 100644
--- a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  imageStore(arg_0, ivec3(uvec3(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -32,7 +32,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  imageStore(arg_0, ivec3(uvec3(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 
 void fragment_main() {
@@ -54,7 +54,7 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  imageStore(arg_0, ivec3(uvec3(0u)), vec4(0.0f));
+  imageStore(arg_0, ivec3(uvec3(1u)), vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
index ae9e2a0..ae4d72d 100644
--- a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_04fa78() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
index 864a150..cd6c7d2 100644
--- a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_43025d() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
index 17c501c..b897f9e 100644
--- a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_751f8a() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
index 57e0d6c..7afc09f 100644
--- a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_788010() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
index d7fca45..cbab069 100644
--- a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGather_7dd226() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
index 1fa2dff..6f9e39d 100644
--- a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_829357() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
index a3c29f8..97ac25f 100644
--- a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_8578bc() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
index fed7580..b357ab0 100644
--- a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_aaf6bd() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
index 2ef6086..77c9caa 100644
--- a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_be276f() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
index a15bb75..207c477 100644
--- a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp isamplerCubeArray arg_1_arg_2;
 
 void textureGather_c0640c() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
index 35551c6..6278040 100644
--- a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_d4b5c6() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
index 62c83c4..7ddd1c5 100644
--- a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeArray arg_1_arg_2;
 
 void textureGather_d98d59() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
index a4fd26f..50bc90c 100644
--- a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -36,7 +36,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
@@ -61,7 +61,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_e2acac() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
 }
diff --git a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
index 0b0838a..db3a370 100644
--- a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -36,7 +36,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
@@ -61,7 +61,7 @@
 uniform highp usamplerCubeArray arg_1_arg_2;
 
 void textureGather_f2c6e3() {
-  vec3 arg_3 = vec3(0.0f);
+  vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
index 51c85b2..5840d60 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_2e409c() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
index 33e06ee..d969eeb 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureGatherCompare_60d2d1() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
index fc371e2..3cf8700 100644
--- a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
@@ -6,9 +6,9 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_4703d0() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
index 8d39802..d5232d5 100644
--- a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSample_4dd1bf() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)));
 }
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
index bd4eaf2..c97beb8 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
@@ -6,9 +6,9 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSample_60bf45() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
index d95de69..83da0bc 100644
--- a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSample_7fd8cb() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0f);
 }
diff --git a/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
index 1354303..d93ec35 100644
--- a/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSample_bc7477() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)));
 }
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
index 31ee71f..8252825 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSample_c2f4e8() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0f);
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
index aeeabb1..18a388a 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleBias_c6953d() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
index e268853..6cc7cbb 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleBias_eed7c4() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
index 794ee02..18aa1a8 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_1912e5() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
index 1fb97d6..235b30d 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
@@ -6,10 +6,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_7b5025() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
index f822276..b87a8e2 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_a3ca7e() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
index 3633f07..57f13c2 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
@@ -6,10 +6,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompare_af1051() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index dbec8ba..5fb7acf 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_4cf3a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
index e765407..ce7a066 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_958c87() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
index abe4ad6..05d1ed3 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_b6e47c() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
index 75de5c7..c2e279e 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleCompareLevel_bcb3dd() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
-  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(0));
+  float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
index 19810e7..baf5196 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
@@ -38,10 +38,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
@@ -65,10 +65,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_bbb58f() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
index 7e0c762..07d9151 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
@@ -38,10 +38,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
@@ -65,10 +65,10 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleGrad_e383db() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
-  vec3 arg_4 = vec3(0.0f);
-  vec3 arg_5 = vec3(0.0f);
+  vec3 arg_4 = vec3(1.0f);
+  vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
index 5cff227..0b9c461 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_0bdd9a() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
index 39ada01..cb9030e 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_1b0291() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
index fdc66c1..6f374db 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_1bf73e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
index 185c1ae..0e39fc1 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_2974eb() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
index eafbee8..294b600 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36780e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
index 8b7fae4..b157b7d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_36f0d3() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
index 17c62e3..8b2a128 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_3c3442() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
index 1a8bebf..a01a92b 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_615583() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
index 8a2f1a0..9ecab6d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_941a53() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
index 3d24c0f..2e205ca 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_a12142() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
index 4f9d09d..ed7ade4 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArray arg_0_arg_1;
 
 void textureSampleLevel_aab3b9() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
index 03fa0be..3741daf 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ae5e39() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
index feffd84..54a8246 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
@@ -36,7 +36,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
@@ -61,7 +61,7 @@
 uniform highp samplerCubeShadow arg_0_arg_1;
 
 void textureSampleLevel_ae92a2() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
index 3c550b9..e6e12b3 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_cdfe0f() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
index 3c58f6c..61e1891 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
@@ -5,10 +5,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -37,10 +37,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void fragment_main() {
@@ -63,10 +63,10 @@
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_e6ce9e() {
-  vec2 arg_2 = vec2(0.0f);
+  vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
-  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(0));
+  float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
index e3d2bb2..e55c383 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -37,7 +37,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
@@ -63,7 +63,7 @@
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
 void textureSampleLevel_ff11bc() {
-  vec3 arg_2 = vec3(0.0f);
+  vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
index b7cf6cd..77b9685 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  ivec2 arg_1 = ivec2(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  ivec2 arg_1 = ivec2(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
-  ivec2 arg_1 = ivec2(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec2 arg_1 = ivec2(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.glsl
index 79c3f3a..bb01c0a 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.glsl
index 3a1e8e2..7ba68db 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_1dc954() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
index 8b3dd99..0bd8075 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  ivec3 arg_1 = ivec3(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  ivec3 arg_1 = ivec3(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
-  ivec3 arg_1 = ivec3(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec3 arg_1 = ivec3(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.glsl
index ea017e2..0e5b273 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_285218() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.glsl
index 199d3fd..9ec94ea 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
index cf424c5..0b8dd66 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.glsl
index 3d85eaf..90a7995 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.glsl
index 90689a7..ec43125 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
index e5e4f60..4a1906c 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  ivec2 arg_1 = ivec2(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  ivec2 arg_1 = ivec2(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
-  ivec2 arg_1 = ivec2(0);
-  ivec4 arg_2 = ivec4(0);
+  ivec2 arg_1 = ivec2(1);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.glsl
index 99b7eef..4e5d748 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.glsl
index 13ee98a..3653875 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3c1937() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
index ca32e2d..347618a 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_3d6f01() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
index 941cf5f..71958aa 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
index f62af08..3fdf50e 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
index c8f958a..d72182b 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  uvec2 arg_1 = uvec2(0u);
-  uvec4 arg_2 = uvec4(0u);
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  uvec2 arg_1 = uvec2(0u);
-  uvec4 arg_2 = uvec4(0u);
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
-  uvec2 arg_1 = uvec2(0u);
-  uvec4 arg_2 = uvec4(0u);
+  uvec2 arg_1 = uvec2(1u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.glsl
index 00c2178..123a580 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
index cedf8d3..7272afa 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(uvec3(arg_1, arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
index c117bf5..a40a3fa 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_602b5a() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
index e18d900..3ad8560 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
index 02980de..6162fa8 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  ivec2 arg_1 = ivec2(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  ivec2 arg_1 = ivec2(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
-  ivec2 arg_1 = ivec2(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec2 arg_1 = ivec2(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.glsl
index 851f0cb..b1c6052 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.glsl
index 2fd85dc..1ef7771 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
index bbc6fea..e7efc9f 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  uvec2 arg_1 = uvec2(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  uvec2 arg_1 = uvec2(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
-  uvec2 arg_1 = uvec2(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec2 arg_1 = uvec2(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
index 6ca1d78..e76c7ed 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
index 11b482d..12d8707 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.glsl
index 1658f25..6e6aa77 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
index d44613f..fef2f65 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
index c07a4da..03366ae 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.glsl
index 8eff443..207ca5e 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_8c76e9() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.glsl
index 8de8517..7cf63ce 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_958353() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.glsl
index f625148..6493f45 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_959d94() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.glsl
index 488d24e..f6a0206 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
index 7c24593..18cc9b6 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  uvec2 arg_1 = uvec2(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  uvec2 arg_1 = uvec2(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
-  uvec2 arg_1 = uvec2(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec2 arg_1 = uvec2(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.glsl
index 61ce0ec..0b9d310 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_a4c338() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.glsl
index aa2d146..583ceae 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_a6e78f() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
index 95a8c41..3d10698 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  ivec3 arg_1 = ivec3(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  ivec3 arg_1 = ivec3(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
-  ivec3 arg_1 = ivec3(0);
-  uvec4 arg_2 = uvec4(0u);
+  ivec3 arg_1 = ivec3(1);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.glsl
index 75601c2..b4d7af6 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b70ded() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
index 942bee3..7944116 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_b77161() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.glsl
index 276322e..7dabf5b 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.glsl
index 4473606..add07eb 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_c1f29e() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
index 964605e..519e05f 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.glsl
index dbd3c65..ebd121a 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_d26166() {
   uint arg_1 = 1u;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
index ca21e8d..9129395 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -35,7 +35,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -59,7 +59,7 @@
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
   int arg_1 = 1;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
index 106b253..66589dc 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  uvec3 arg_1 = uvec3(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  uvec3 arg_1 = uvec3(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
-  uvec3 arg_1 = uvec3(0u);
-  ivec4 arg_2 = ivec4(0);
+  uvec3 arg_1 = uvec3(1u);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
index 30fc138..af5d008 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.glsl
index e9d84ef..3811864 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_de4b94() {
   uint arg_1 = 1u;
-  ivec4 arg_2 = ivec4(0);
+  ivec4 arg_2 = ivec4(1);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
index b348fde..fb3f1ce 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
-  uvec2 arg_1 = uvec2(0u);
+  uvec2 arg_1 = uvec2(1u);
   int arg_2 = 1;
-  vec4 arg_3 = vec4(0.0f);
+  vec4 arg_3 = vec4(1.0f);
   imageStore(arg_0, ivec3(uvec3(arg_1, uint(arg_2))), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
index f626157..28f9b87 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   uint arg_2 = 1u;
-  uvec4 arg_3 = uvec4(0u);
+  uvec4 arg_3 = uvec4(1u);
   imageStore(arg_0, ivec3(arg_1, int(arg_2)), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.glsl
index 024a799..06eff87 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_e7c6d8() {
   uint arg_1 = 1u;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, int(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.glsl
index ceee356..658099b 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
   int arg_1 = 1;
-  vec4 arg_2 = vec4(0.0f);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
index bce0c58..7e4e5ea 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  ivec3 arg_1 = ivec3(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  ivec3 arg_1 = ivec3(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
-  ivec3 arg_1 = ivec3(0);
-  vec4 arg_2 = vec4(0.0f);
+  ivec3 arg_1 = ivec3(1);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
index 60b3e0b..5de9e5f 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
@@ -4,9 +4,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -35,9 +35,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
@@ -60,9 +60,9 @@
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
-  ivec2 arg_1 = ivec2(0);
+  ivec2 arg_1 = ivec2(1);
   int arg_2 = 1;
-  ivec4 arg_3 = ivec4(0);
+  ivec4 arg_3 = ivec4(1);
   imageStore(arg_0, ivec3(arg_1, arg_2), arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.glsl
index 9976dc1..33b004f 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -36,7 +36,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
@@ -61,7 +61,7 @@
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
   int arg_1 = 1;
-  uvec4 arg_2 = uvec4(0u);
+  uvec4 arg_2 = uvec4(1u);
   imageStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
index 5f0b171..5229147 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
@@ -4,8 +4,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  uvec3 arg_1 = uvec3(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
@@ -34,8 +34,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  uvec3 arg_1 = uvec3(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
@@ -58,8 +58,8 @@
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
-  uvec3 arg_1 = uvec3(0u);
-  vec4 arg_2 = vec4(0.0f);
+  uvec3 arg_1 = uvec3(1u);
+  vec4 arg_2 = vec4(1.0f);
   imageStore(arg_0, ivec3(arg_1), arg_2);
 }
 
