diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl
index 8c8d6c6..7cd1264 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32uint, write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
 fn textureStore_00ca64() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.dxc.hlsl
index bc0aef6..28af169 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_00ca64() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.fxc.hlsl
index bc0aef6..28af169 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_00ca64() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.glsl
index 2d80cee..7f9cf0d 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_00ca64() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_00ca64() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_00ca64() {
-  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/00ca64.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.msl
index eb9a573..f99ba1f 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_00ca64(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.spvasm
index 4469ec0..5c08814 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_00ca64 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_00ca64
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_00ca64
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_00ca64
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_00ca64
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_00ca64
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_00ca64
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.wgsl
index a9d8fc4..9672254 100644
--- a/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/00ca64.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureStore_00ca64() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl
index 8ca7f68..64ec2f8 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32sint, write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
 fn textureStore_0148bd() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.dxc.hlsl
index 05d3e35..dcf713b 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_0148bd() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.fxc.hlsl
index 05d3e35..dcf713b 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_0148bd() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.glsl
index c028f23..54ea295 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0148bd() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0148bd() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0148bd() {
-  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/0148bd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.msl
index 0426dc0..c813cb2 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_0148bd(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.spvasm
index 2d64adc..046daad 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_0148bd = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_0148bd
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_0148bd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_0148bd
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_0148bd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_0148bd
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_0148bd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.wgsl
index 80f6c27..3da6033 100644
--- a/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0148bd.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureStore_0148bd() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
index 9195e69..ec9d7a9 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_05ce15() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.dxc.hlsl
index c83a95c..0c19880 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_05ce15() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.fxc.hlsl
index c83a95c..0c19880 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_05ce15() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.glsl
index 5437eda..e40a987 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_05ce15() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_05ce15() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_05ce15() {
-  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/05ce15.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.msl
index 9eb8590..10e16a5 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_05ce15(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.spvasm
index 8120c43..e5dc004 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_05ce15 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_05ce15
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_05ce15
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_05ce15
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_05ce15
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_05ce15
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_05ce15
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
index 85050b5..6110878 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, write>;
 
 fn textureStore_05ce15() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
index d1ee996..31d8bf5 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_064c7f() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.dxc.hlsl
index 8adf145..711e1c7 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_064c7f() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.fxc.hlsl
index 8adf145..711e1c7 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_064c7f() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.msl
index 00a4cf7..2efa3e3 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_064c7f(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.spvasm
index d6d60c0..e81ac09 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,42 +41,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_064c7f = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_064c7f
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_064c7f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_064c7f
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_064c7f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_064c7f
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_064c7f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
index ba056bc..853f005 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, write>;
 
 fn textureStore_064c7f() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl
index 32f39e3..e1e22c9 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba16uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_068641() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.dxc.hlsl
index 092e801..9823316 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_068641() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.fxc.hlsl
index 092e801..9823316 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_068641() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.glsl
index f84a5f2..d627f3c 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_068641() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_068641() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_068641() {
-  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/068641.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.msl
index a35ed83..0c0aa54 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_068641(texture3d<uint, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  uint4 arg_2 = uint4(0u);
+  int3 arg_1 = int3(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.spvasm
index b77d315..5c3f360 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %19 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_068641 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_068641
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_068641
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_068641
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_068641
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_068641
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_068641
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
index bad48dd..6e49bfc 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, write>;
 
 fn textureStore_068641() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl
index dcc3c36..2a75d72 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32float, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_06e49c() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.dxc.hlsl
index 632d664..120661e 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_06e49c() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.fxc.hlsl
index 632d664..120661e 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_06e49c() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.glsl
index 8e3732f..265a868 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_06e49c() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_06e49c() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_06e49c() {
-  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/06e49c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.msl
index a2beb54..9c379af 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_06e49c(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.spvasm
index 2db7642..2460f5e 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_06e49c = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_06e49c
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_06e49c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_06e49c
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_06e49c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_06e49c
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_06e49c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.wgsl
index 0373258..9e0a36f 100644
--- a/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/06e49c.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureStore_06e49c() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl
index 2a43425..7ddcb61 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba16sint, write>, coords: vec3<u32>, value: vec4<i32>)
 fn textureStore_07548b() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.dxc.hlsl
index 56dfb6c..f33e906 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_07548b() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.fxc.hlsl
index 56dfb6c..f33e906 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_07548b() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.glsl
index 26da7f2..c1b94f0 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_07548b() {
-  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/07548b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.msl
index 05af3ae..179f9868 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_07548b(texture3d<int, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  int4 arg_2 = int4(0);
+  uint3 arg_1 = uint3(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.spvasm
index 02f5ee8..2a78c9c 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %19 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_07548b = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_07548b
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_07548b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_07548b
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_07548b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_07548b
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_07548b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.wgsl
index c935ddc..1938ab6 100644
--- a/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/07548b.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, write>;
 
 fn textureStore_07548b() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl
index 90e3619..9a69d14 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8uint, write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
 fn textureStore_0a1a79() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.dxc.hlsl
index 62d0c96..d52e0c7 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_0a1a79() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.fxc.hlsl
index 62d0c96..d52e0c7 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_0a1a79() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.glsl
index 931033d..b955a02 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_0a1a79() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_0a1a79() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_0a1a79() {
-  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/0a1a79.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.msl
index 8d201f2..532d8c8 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_0a1a79(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.spvasm
index 417481a..cedd43d 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_0a1a79 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_0a1a79
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_0a1a79
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_0a1a79
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_0a1a79
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_0a1a79
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_0a1a79
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.wgsl
index 9c8a216..61f1fe9 100644
--- a/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0a1a79.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureStore_0a1a79() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
index 8814567..eb144e5 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_0af6b5() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.dxc.hlsl
index a0e877b..5484237 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_0af6b5() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.fxc.hlsl
index a0e877b..5484237 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_0af6b5() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.glsl
index 1ae6b6b..7d26a29 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_0af6b5() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_0af6b5() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_0af6b5() {
-  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/0af6b5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.msl
index cbf3101..de6f241 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_0af6b5(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.spvasm
index 2c11b9d..dbf15f2 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_0af6b5 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_0af6b5
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_0af6b5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_0af6b5
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_0af6b5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_0af6b5
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_0af6b5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
index cba9b02..a0000ef 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, write>;
 
 fn textureStore_0af6b5() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
index 09d1595..655177a 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_0c3dff() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.dxc.hlsl
index 2c960ef..5fe4eaf 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_0c3dff() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.fxc.hlsl
index 2c960ef..5fe4eaf 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_0c3dff() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.glsl
index 216ba1a..f7b6498 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_0c3dff() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_0c3dff() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_0c3dff() {
-  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/0c3dff.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.msl
index 7778f10..d33b405 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_0c3dff(texture2d<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  uint4 arg_2 = uint4(0u);
+  int2 arg_1 = int2(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.spvasm
index a5e6876..fc42068 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_0c3dff = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_0c3dff
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_0c3dff
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_0c3dff
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_0c3dff
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_0c3dff
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_0c3dff
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
index 3da20f2..4f16e0d 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, write>;
 
 fn textureStore_0c3dff() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl
index 1c34d7f..94cff34 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16sint, write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
 fn textureStore_0cc825() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.dxc.hlsl
index d0d43f7..9528144 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_0cc825() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.fxc.hlsl
index d0d43f7..9528144 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_0cc825() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.glsl
index 5b99527..08388eb 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0cc825() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0cc825() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_0cc825() {
-  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/0cc825.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.msl
index 64aa5a9..5ef5511 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_0cc825(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.spvasm
index 93080b6..e817aeb 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_0cc825 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_0cc825
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_0cc825
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_0cc825
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_0cc825
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_0cc825
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_0cc825
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.wgsl
index b5dce9d..7073dc0 100644
--- a/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0cc825.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureStore_0cc825() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl
index 953b39a..6a983d5 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_102722() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.dxc.hlsl
index e256ac8..4c4b092 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_102722() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.fxc.hlsl
index e256ac8..4c4b092 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_102722() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.msl
index f197dcc..50ee1c6 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_102722(texture1d<uint, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.spvasm
index 0311196..243634e 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %21 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_102722 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_102722
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_102722
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_102722
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_102722
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_102722
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_102722
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
index ca67293..34b69c3 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_102722() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl
index 9e357ca..36d1073 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32uint, write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
 fn textureStore_158cf0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.dxc.hlsl
index c2d4244..dba67c8 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_158cf0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.fxc.hlsl
index c2d4244..dba67c8 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_158cf0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.glsl
index 3fbe7e3..fd42714 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_158cf0() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_158cf0() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_158cf0() {
-  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/158cf0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.msl
index b53dec4..e5a7cc7 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_158cf0(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.spvasm
index 540fcce..2316c2d 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %26 = OpConstantNull %v4uint
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_158cf0 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2uint %arg_1
-         %33 = OpCompositeExtract %uint %32 0
-         %34 = OpCompositeExtract %uint %32 1
-         %35 = OpLoad %uint %arg_2
-         %36 = OpCompositeConstruct %v3uint %33 %34 %35
-         %37 = OpLoad %v4uint %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_158cf0
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_158cf0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_158cf0
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_158cf0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_158cf0
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_158cf0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.wgsl
index 234e5ce..cf77fa8 100644
--- a/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/158cf0.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureStore_158cf0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl
index 58f1750..d7fda87 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8sint, write>, coords: vec2<u32>, value: vec4<i32>)
 fn textureStore_1839f2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.dxc.hlsl
index a349cc7..c7d1d01 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_1839f2() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.fxc.hlsl
index a349cc7..c7d1d01 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_1839f2() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.glsl
index 290798d..80d857b 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_1839f2() {
-  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/1839f2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.msl
index 2ab9268..dfe79c1 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_1839f2(texture2d<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  int4 arg_2 = int4(0);
+  uint2 arg_1 = uint2(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.spvasm
index 9ceec9b..801a5de 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_1839f2 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_1839f2
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_1839f2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_1839f2
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_1839f2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_1839f2
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_1839f2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.wgsl
index 8dbc1c9..53634ab 100644
--- a/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1839f2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, write>;
 
 fn textureStore_1839f2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl
index 88a097b..544693a 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32sint, write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
 fn textureStore_1a7d35() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.dxc.hlsl
index 0a928d2..7fc2cd7 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1a7d35() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.fxc.hlsl
index 0a928d2..7fc2cd7 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1a7d35() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.glsl
index 3e00907..bcd8839 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1a7d35() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1a7d35() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1a7d35() {
-  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/1a7d35.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.msl
index e5c4cd4..edf7dc3 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_1a7d35(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.spvasm
index 72a691f..c73f137 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %26 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_1a7d35 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %36 = OpLoad %uint %arg_2
-         %37 = OpCompositeConstruct %v3uint %34 %35 %36
-         %38 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_1a7d35
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_1a7d35
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_1a7d35
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_1a7d35
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_1a7d35
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_1a7d35
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.wgsl
index 81eb9a1..d20a4b0 100644
--- a/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1a7d35.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureStore_1a7d35() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
index 4445c3d..5fd9db6 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8unorm, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_1bbd08() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.dxc.hlsl
index 9bbd9cf..ce81287 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_1bbd08() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.fxc.hlsl
index 9bbd9cf..ce81287 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_1bbd08() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.glsl
index 8bbedc5..ebbd4b4 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_1bbd08() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_1bbd08() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_1bbd08() {
-  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/1bbd08.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.msl
index a09fc63..25ebb70 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_1bbd08(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.spvasm
index e5356af..c67fbe5 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_1bbd08 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_1bbd08
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_1bbd08
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_1bbd08
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_1bbd08
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_1bbd08
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_1bbd08
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
index 7043ee1..0f2939e 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, write>;
 
 fn textureStore_1bbd08() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
index 383b4f0..b7226e4 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_1c02e7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.dxc.hlsl
index 4fe7a79..722133e 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1c02e7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.fxc.hlsl
index 4fe7a79..722133e 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1c02e7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.glsl
index 43e87d1..20a007a 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1c02e7() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1c02e7() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1c02e7() {
-  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/1c02e7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.msl
index a2ef827..2d3b1a9 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_1c02e7(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.spvasm
index 8497c20..e73c661 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %26 = OpConstantNull %v4int
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_1c02e7 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2int %arg_1
-         %33 = OpCompositeExtract %int %32 0
-         %34 = OpCompositeExtract %int %32 1
-         %35 = OpLoad %int %arg_2
-         %36 = OpCompositeConstruct %v3int %33 %34 %35
-         %37 = OpLoad %v4int %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_1c02e7
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_1c02e7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_1c02e7
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_1c02e7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_1c02e7
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_1c02e7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
index 1632c65..68cd402 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureStore_1c02e7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl
index 252b14a..fbfcdb4 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32sint, write>, coords: u32, value: vec4<i32>)
 fn textureStore_1dc954() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.dxc.hlsl
index 63191df..5b510fb 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_1dc954() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.fxc.hlsl
index 63191df..5b510fb 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_1dc954() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.msl
index 78aa861..7263621 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_1dc954(texture1d<int, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.spvasm
index 2d08c73..d5eb6a3 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %21 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_1dc954 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_1dc954
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_1dc954
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_1dc954
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_1dc954
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_1dc954
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_1dc954
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.wgsl
index 498cfc4..7030e86 100644
--- a/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1dc954.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_1dc954() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl
index cb704a8..16e0779 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32float, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_1e20f2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.dxc.hlsl
index d7b4a2b..6100385 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_1e20f2() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.fxc.hlsl
index d7b4a2b..6100385 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_1e20f2() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.glsl
index 1ea1aaf..2f54945 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_1e20f2() {
-  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/1e20f2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.msl
index 698070e..de3d80e 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_1e20f2(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.spvasm
index db47768..5f435d0 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_1e20f2 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_1e20f2
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_1e20f2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_1e20f2
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_1e20f2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_1e20f2
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_1e20f2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.wgsl
index 1116037..966a957 100644
--- a/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1e20f2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, write>;
 
 fn textureStore_1e20f2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl
index 11f4582..3992003 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16sint, write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
 fn textureStore_1f1ef8() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.dxc.hlsl
index ffa0ed2..35af475 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1f1ef8() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.fxc.hlsl
index ffa0ed2..35af475 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_1f1ef8() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.glsl
index 81f7833..e04a7f1 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1f1ef8() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1f1ef8() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1f1ef8() {
-  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/1f1ef8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.msl
index d7023a4..1b49bdf 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_1f1ef8(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.spvasm
index 2f0bad3..d604a9a 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_1f1ef8 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_1f1ef8
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_1f1ef8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_1f1ef8
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_1f1ef8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_1f1ef8
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_1f1ef8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.wgsl
index 5a4ba99..8c4b8d0 100644
--- a/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1f1ef8.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureStore_1f1ef8() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl
index c00156f..0c9fc1f 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8snorm, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_207fdd() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.dxc.hlsl
index 9e5acc4..3756cec 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_207fdd() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.fxc.hlsl
index 9e5acc4..3756cec 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_207fdd() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.glsl
index be45a70..fd81cb6 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_207fdd() {
-  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);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.msl
index 97a7ca9..396bd7c 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_207fdd(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.spvasm
index b40adc5..4ac25eb0 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_207fdd = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_207fdd
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_207fdd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_207fdd
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_207fdd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_207fdd
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_207fdd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.wgsl
index 703e7ce..52d756f 100644
--- a/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/207fdd.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, write>;
 
 fn textureStore_207fdd() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl
index ab56eff..741a0d9 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_22d955() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.dxc.hlsl
index ac28249..1c5aefe 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_22d955() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.fxc.hlsl
index ac28249..1c5aefe 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_22d955() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.glsl
index d8279c2..2e6e6d4 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_22d955() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_22d955() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_22d955() {
-  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/22d955.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.msl
index be88306..d83ba28 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_22d955(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.spvasm
index dff6bf1..80c0363 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %26 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_22d955 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %36 = OpLoad %int %arg_2
-         %37 = OpCompositeConstruct %v3int %34 %35 %36
-         %38 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_22d955
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_22d955
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_22d955
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_22d955
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_22d955
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_22d955
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
index 9ca9d8e..2bdc27e 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureStore_22d955() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl
index 6e2e0a5..6ad75f8 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8snorm, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_22f045() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.dxc.hlsl
index 9f081c3..915ae9e 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_22f045() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.fxc.hlsl
index 9f081c3..915ae9e 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_22f045() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.glsl
index d57b75b..0788b23 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_22f045() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_22f045() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_22f045() {
-  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/22f045.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.msl
index 0195bd5..8ebc61f 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_22f045(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.spvasm
index 164d082..c0333ad 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_22f045 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_22f045
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_22f045
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_22f045
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_22f045
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_22f045
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_22f045
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.wgsl
index 28b7b5b..10e82ad 100644
--- a/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22f045.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureStore_22f045() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl
index a6845ca..7a8c885 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32uint, write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
 fn textureStore_2383fc() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.dxc.hlsl
index ea89155..46d7d3d 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_2383fc() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.fxc.hlsl
index ea89155..46d7d3d 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_2383fc() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.glsl
index 73f19f9..c298527 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_2383fc() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_2383fc() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_2383fc() {
-  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/2383fc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.msl
index f343b91..0e54c94 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_2383fc(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.spvasm
index b31de19..6d925bf 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_2383fc = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_2383fc
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_2383fc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_2383fc
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_2383fc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_2383fc
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_2383fc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.wgsl
index a8fb10c..c9e1dd2 100644
--- a/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2383fc.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureStore_2383fc() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl
index 651efea..008b5c9 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8unorm, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_258ab0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.dxc.hlsl
index 81ca1b1..7047e7c 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_258ab0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.fxc.hlsl
index 81ca1b1..7047e7c 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_258ab0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.glsl
index 63b7d96..d0c070f 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_258ab0() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_258ab0() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_258ab0() {
-  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/258ab0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.msl
index e471f48..0c3513a 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_258ab0(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.spvasm
index 21ec492..bcf4eb5 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_258ab0 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_258ab0
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_258ab0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_258ab0
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_258ab0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_258ab0
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_258ab0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.wgsl
index 17cc765..caf28b2 100644
--- a/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/258ab0.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureStore_258ab0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
index 137e2cd..224f16a 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_26bf70() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.dxc.hlsl
index 57341d9..c7747ff 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_26bf70() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.fxc.hlsl
index 57341d9..c7747ff 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_26bf70() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.glsl
index 048b5b4..e4bbc30 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_26bf70() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_26bf70() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_26bf70() {
-  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/26bf70.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.msl
index 73242ad..c86dfd5 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_26bf70(texture2d<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  uint4 arg_2 = uint4(0u);
+  int2 arg_1 = int2(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.spvasm
index 188aded..94290df 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_26bf70 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_26bf70
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_26bf70
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_26bf70
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_26bf70
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_26bf70
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_26bf70
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
index 9585caf..d83fa4d 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, write>;
 
 fn textureStore_26bf70() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
index 39d8497..074f8c3 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rg32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_2796b4() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.dxc.hlsl
index 63eefce..757e349 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_2796b4() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.fxc.hlsl
index 63eefce..757e349 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_2796b4() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.msl
index c2ebcd9..cb47485 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_2796b4(texture3d<int, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  int4 arg_2 = int4(0);
+  int3 arg_1 = int3(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.spvasm
index d79adda..e2080b0 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,44 +41,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_2796b4 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v3int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_2796b4
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_2796b4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_2796b4
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_2796b4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_2796b4
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_2796b4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
index 00dfc5d..cceb513 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, write>;
 
 fn textureStore_2796b4() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl
index 98f2ada..2e7da69 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32float, write>, coords: u32, value: vec4<f32>)
 fn textureStore_285218() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.dxc.hlsl
index e6d6c39..fc40d74 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_285218() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.fxc.hlsl
index e6d6c39..fc40d74 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_285218() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.msl
index c0e94ba..f6bf32a 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_285218(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.spvasm
index 6603867..b36c2a1 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_285218 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_285218
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_285218
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_285218
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_285218
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_285218
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_285218
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.wgsl
index a2e8b60..1685bc2 100644
--- a/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/285218.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_285218() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl
index 644c834..889a179 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32sint, write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
 fn textureStore_28a7ec() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.dxc.hlsl
index adc7c02..f46800b 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_28a7ec() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.fxc.hlsl
index adc7c02..f46800b 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_28a7ec() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.glsl
index f477fb3..9361577 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_28a7ec() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_28a7ec() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_28a7ec() {
-  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/28a7ec.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.msl
index 55511c1..92ed017 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_28a7ec(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.spvasm
index 1ce8ddf..be90010 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_28a7ec = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_28a7ec
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_28a7ec
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_28a7ec
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_28a7ec
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_28a7ec
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_28a7ec
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.wgsl
index ab8d410a..bb74805 100644
--- a/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/28a7ec.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureStore_28a7ec() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
index 1e0f482..1333e72 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_2ac6c7() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.dxc.hlsl
index 299e980..15517db 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2ac6c7() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.fxc.hlsl
index 299e980..15517db 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2ac6c7() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.msl
index da12ebc..37ba8ed 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_2ac6c7(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.spvasm
index f15467a..cd316b5 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_2ac6c7 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_2ac6c7
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_2ac6c7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_2ac6c7
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_2ac6c7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_2ac6c7
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_2ac6c7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
index 7cb7cde..3a9faa7 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_2ac6c7() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl
index 588630b..08d4370 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32float, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_2d2835() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.dxc.hlsl
index b0cc940..5feb22c 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_2d2835() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.fxc.hlsl
index b0cc940..5feb22c 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_2d2835() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.msl
index 30f7ba5..2fe97bd 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_2d2835(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.spvasm
index ef33f05..f699efe 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,52 +42,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_2d2835 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_2d2835
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_2d2835
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_2d2835
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_2d2835
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_2d2835
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_2d2835
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.wgsl
index 76e91c0..2e503b1 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureStore_2d2835() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl
index 2512a83..ffe422a 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32float, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_2e6102() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.dxc.hlsl
index ae9f5dd..f1a37fb 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_2e6102() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.fxc.hlsl
index ae9f5dd..f1a37fb 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_2e6102() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.glsl
index e3185e6..a2efe7d 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_2e6102() {
-  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/2e6102.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.msl
index 76221f2..b12fdb9 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_2e6102(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.spvasm
index e9c074c..d17728d 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_2e6102 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_2e6102
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_2e6102
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_2e6102
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_2e6102
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_2e6102
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_2e6102
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.wgsl
index 212a545..8b5556a 100644
--- a/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2e6102.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, write>;
 
 fn textureStore_2e6102() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
index 1501b10..d293c97 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_2eb2a4() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.dxc.hlsl
index 36b1326..b0c2cc0 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2eb2a4() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.fxc.hlsl
index 36b1326..b0c2cc0 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2eb2a4() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.msl
index 07e1c2a..d3bd936 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_2eb2a4(texture1d<uint, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.spvasm
index c00ec81..19d931f 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %21 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_2eb2a4 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_2eb2a4
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_2eb2a4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_2eb2a4
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_2eb2a4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_2eb2a4
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_2eb2a4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
index 38b1ccb..7323e1d 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_2eb2a4() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
index fb7b871..f2d8621 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8snorm, write>, coords: i32, value: vec4<f32>)
 fn textureStore_2ed2a3() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.dxc.hlsl
index 5d63a7b..c347426 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2ed2a3() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.fxc.hlsl
index 5d63a7b..c347426 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_2ed2a3() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.msl
index e3b850b..e4a9643 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_2ed2a3(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.spvasm
index c692c2f..e07c68c 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_2ed2a3 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_2ed2a3
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_2ed2a3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_2ed2a3
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_2ed2a3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_2ed2a3
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_2ed2a3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
index 54b46ea..39e5cc1 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_2ed2a3() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl
index 392288f..16db314 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32sint, write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
 fn textureStore_30b0b0() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.dxc.hlsl
index 79d2f71..2440a69 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_30b0b0() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.fxc.hlsl
index 79d2f71..2440a69 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_30b0b0() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.glsl
index 9fd35ef..87d1edb 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_30b0b0() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_30b0b0() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_30b0b0() {
-  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/30b0b0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.msl
index 4b580cd..e2d8c74 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_30b0b0(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.spvasm
index 15a126f..e8ee410 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_30b0b0 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_30b0b0
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_30b0b0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_30b0b0
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_30b0b0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_30b0b0
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_30b0b0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.wgsl
index 9ee34ee..cc9fc8a 100644
--- a/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/30b0b0.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureStore_30b0b0() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl
index 05bde5f..27b9e30 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_31745b() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.dxc.hlsl
index 3386530..4e8b4bb 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_31745b() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.fxc.hlsl
index 3386530..4e8b4bb 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_31745b() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.msl
index bde273a..9a436dc 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_31745b(texture2d<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  int4 arg_2 = int4(0);
+  int2 arg_1 = int2(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.spvasm
index 016eb27..683bc16 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,44 +41,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_31745b = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_31745b
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_31745b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_31745b
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_31745b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_31745b
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_31745b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
index 03ffd0b..edacd7b 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, write>;
 
 fn textureStore_31745b() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl
index d7354e6..e31b404 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_32f368() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.dxc.hlsl
index 1c217b2..2562e61 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_32f368() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.fxc.hlsl
index 1c217b2..2562e61 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_32f368() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.glsl
index b86d5eb..77d4a8b 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_32f368() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_32f368() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_32f368() {
-  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/32f368.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.msl
index 3daf6cb..6f84388 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_32f368(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.spvasm
index a154105..2bed16d 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_32f368 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_32f368
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_32f368
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_32f368
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_32f368
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_32f368
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_32f368
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
index 06eceed..d36096e 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureStore_32f368() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl
index b5d2431..f8c0832 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8unorm, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_330b7c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.dxc.hlsl
index a92e0d0..1338528 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_330b7c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.fxc.hlsl
index a92e0d0..1338528 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_330b7c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.glsl
index e6ed5cb..d18eddd 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_330b7c() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_330b7c() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_330b7c() {
-  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/330b7c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.msl
index eca28c9..fd47878 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_330b7c(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.spvasm
index fcaad14..ee90256 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_330b7c = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_330b7c
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_330b7c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_330b7c
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_330b7c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_330b7c
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_330b7c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.wgsl
index 9770e41..dabad78 100644
--- a/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/330b7c.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureStore_330b7c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl
index 55d78a0..4dfd7ec 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_331aee() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.dxc.hlsl
index 1070c26..8e1189f 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_331aee() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.fxc.hlsl
index 1070c26..8e1189f 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_331aee() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.glsl
index 6d0ade0..e2737d6 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_331aee() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_331aee() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_331aee() {
-  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/331aee.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.msl
index 94c0dee..0b7bcaa 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_331aee(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.spvasm
index df8cccf..a06250e 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_331aee = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_331aee
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_331aee
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_331aee
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_331aee
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_331aee
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_331aee
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
index 97cea3b..115bdee 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, write>;
 
 fn textureStore_331aee() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl
index b713ef0..f075034 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16uint, write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
 fn textureStore_33cec0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.dxc.hlsl
index df6a6f3..ee79489 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_33cec0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.fxc.hlsl
index df6a6f3..ee79489 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_33cec0() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.glsl
index 63ee534..0e7b456 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_33cec0() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_33cec0() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_33cec0() {
-  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/33cec0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.msl
index 34013f8..94eda71 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_33cec0(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.spvasm
index 9419b08..2fe8ee7 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_33cec0 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_33cec0
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_33cec0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_33cec0
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_33cec0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_33cec0
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_33cec0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.wgsl
index 69b0ffd..e1f07b1 100644
--- a/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/33cec0.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureStore_33cec0() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl
index 4c3130b..b8a7ce1 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32float, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_37ffd4() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.dxc.hlsl
index 96673e8..f5ad13e 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_37ffd4() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.fxc.hlsl
index 96673e8..f5ad13e 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_37ffd4() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.glsl
index e8eb1a4..66ed916 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_37ffd4() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_37ffd4() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_37ffd4() {
-  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/37ffd4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.msl
index 7e89ceb..36e93dc 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_37ffd4(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.spvasm
index 8c2ae06..6c02239 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_37ffd4 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_37ffd4
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_37ffd4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_37ffd4
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_37ffd4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_37ffd4
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_37ffd4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.wgsl
index a26203a..317fe2c 100644
--- a/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/37ffd4.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureStore_37ffd4() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
index 37b7f42..97302a4 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_38e8d7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.dxc.hlsl
index 6e867ec..317005d 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_38e8d7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.fxc.hlsl
index 6e867ec..317005d 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_38e8d7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.glsl
index 7a6850e..a2fdcf8 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_38e8d7() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_38e8d7() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_38e8d7() {
-  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/38e8d7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.msl
index c22bedb..98b3084 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_38e8d7(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.spvasm
index 623d520..0125a43 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %26 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_38e8d7 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %36 = OpLoad %int %arg_2
-         %37 = OpCompositeConstruct %v3int %34 %35 %36
-         %38 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_38e8d7
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_38e8d7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_38e8d7
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_38e8d7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_38e8d7
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_38e8d7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
index 37b07ea..48f79ff 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureStore_38e8d7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
index 504713e..b492c44 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_3a52ac() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.dxc.hlsl
index f682606..a32e018 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_3a52ac() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.fxc.hlsl
index f682606..a32e018 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_3a52ac() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.glsl
index 4ae9505..d862022 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_3a52ac() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_3a52ac() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_3a52ac() {
-  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/3a52ac.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.msl
index e243637..65f36a5 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_3a52ac(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.spvasm
index ef89e77..1496de0 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %26 = OpConstantNull %v4int
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_3a52ac = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2int %arg_1
-         %33 = OpCompositeExtract %int %32 0
-         %34 = OpCompositeExtract %int %32 1
-         %35 = OpLoad %int %arg_2
-         %36 = OpCompositeConstruct %v3int %33 %34 %35
-         %37 = OpLoad %v4int %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_3a52ac
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_3a52ac
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_3a52ac
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_3a52ac
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_3a52ac
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_3a52ac
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
index 8306554..7b6336a 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureStore_3a52ac() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
index 6301506..906047c 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_3bb7a1() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.dxc.hlsl
index e18ed4d..46a260c3 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_3bb7a1() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.fxc.hlsl
index e18ed4d..46a260c3 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_3bb7a1() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.glsl
index a46b20b..ac01732 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_3bb7a1() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_3bb7a1() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_3bb7a1() {
-  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/3bb7a1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.msl
index 70c180e..57831d8 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_3bb7a1(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.spvasm
index f7e7b38..da8e7d9 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_3bb7a1 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_3bb7a1
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_3bb7a1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_3bb7a1
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_3bb7a1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_3bb7a1
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_3bb7a1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
index 145dc9a..75a3552 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureStore_3bb7a1() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
index dd01b7f..47169e7 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_3bec15() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.dxc.hlsl
index 7092f58..07f9859 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3bec15() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.fxc.hlsl
index 7092f58..07f9859 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3bec15() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.msl
index 75e47f1..ae5ae1c 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_3bec15(texture1d<uint, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.spvasm
index 4688a0f..65e8ffe 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %21 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_3bec15 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_3bec15
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_3bec15
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_3bec15
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_3bec15
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_3bec15
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_3bec15
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
index af39c20..02803e9 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_3bec15() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl
index bffb6e2..2d5497a 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8uint, write>, coords: u32, value: vec4<u32>)
 fn textureStore_3c1937() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.dxc.hlsl
index 19a9b7b..b1f91c3 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3c1937() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.fxc.hlsl
index 19a9b7b..b1f91c3 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3c1937() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.msl
index 678f483..87b1a47 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_3c1937(texture1d<uint, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.spvasm
index 421d42f..1633d5f 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_3c1937 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_3c1937
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_3c1937
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_3c1937
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_3c1937
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_3c1937
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_3c1937
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.wgsl
index 568e12c..1bb71e7 100644
--- a/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3c1937.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_3c1937() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl
index dedb10e..edc8ab5 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32sint, write>, coords: u32, value: vec4<i32>)
 fn textureStore_3d6f01() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.dxc.hlsl
index 6e3241b..21d5a66 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3d6f01() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.fxc.hlsl
index 6e3241b..21d5a66 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_3d6f01() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.msl
index 1e29e6b..10a8e5d 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_3d6f01(texture1d<int, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.spvasm
index ea91368..a16a364 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -46,41 +46,43 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %21 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_3d6f01 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_3d6f01
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_3d6f01
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_3d6f01
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_3d6f01
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_3d6f01
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_3d6f01
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.wgsl
index 693801c..a59f7a1 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_3d6f01() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl
index 29f4059..dab5410 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8snorm, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_40c455() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.dxc.hlsl
index 5d607d2..e0c5f5c1 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_40c455() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.fxc.hlsl
index 5d607d2..e0c5f5c1 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_40c455() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.glsl
index 4ae299e..0b15e40 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_40c455() {
-  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/40c455.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.msl
index 477b39a..e724e08 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_40c455(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.spvasm
index 91daa0a..0ddfe09 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_40c455 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_40c455
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_40c455
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_40c455
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_40c455
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_40c455
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_40c455
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.wgsl
index 6a50679..0865958 100644
--- a/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/40c455.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, write>;
 
 fn textureStore_40c455() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl
index b62f964..9365274 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<r32float, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_4288fc() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.dxc.hlsl
index bb76511..8009fe8 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_4288fc() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.fxc.hlsl
index bb76511..8009fe8 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_4288fc() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.glsl
index 0b46698..8b37e2b 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_4288fc() {
-  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);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.msl
index 578e1f8..cb21571 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_4288fc(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.spvasm
index 78e13c6..0bde16b 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_4288fc = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_4288fc
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_4288fc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_4288fc
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_4288fc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_4288fc
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_4288fc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.wgsl
index 15e7b21..52e3aeb 100644
--- a/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4288fc.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, write>;
 
 fn textureStore_4288fc() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
index 5fe3eb2..8b1099f 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_441ba8() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.dxc.hlsl
index 3af481a..17eb40c 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_441ba8() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.fxc.hlsl
index 3af481a..17eb40c 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_441ba8() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.glsl
index ef4af51..1350e88 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_441ba8() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_441ba8() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_441ba8() {
-  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/441ba8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.msl
index 1464ab7..2315354 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_441ba8(texture3d<uint, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  uint4 arg_2 = uint4(0u);
+  int3 arg_1 = int3(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.spvasm
index b674880..5757914 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %19 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_441ba8 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_441ba8
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_441ba8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_441ba8
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_441ba8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_441ba8
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_441ba8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
index 773999a..319ac4a 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, write>;
 
 fn textureStore_441ba8() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl
index c5299a4..23b0f00 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16float, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_44daa7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.dxc.hlsl
index c2793de..fae9131 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_44daa7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.fxc.hlsl
index c2793de..fae9131 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_44daa7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.glsl
index ea56040..590dc7c 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_44daa7() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_44daa7() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_44daa7() {
-  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/44daa7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.msl
index 3175b4a..b366375 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_44daa7(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.spvasm
index 88c6042..7bc33b4 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_44daa7 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_44daa7
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_44daa7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_44daa7
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_44daa7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_44daa7
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_44daa7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.wgsl
index 73656cb..c76b503 100644
--- a/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/44daa7.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureStore_44daa7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl
index c0353f2..34f0cd4 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba32sint, write>, coords: vec3<u32>, value: vec4<i32>)
 fn textureStore_486500() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.dxc.hlsl
index 021c55c..d1703f0 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_486500() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.fxc.hlsl
index 021c55c..d1703f0 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_486500() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.glsl
index 5dd0af7..fefc5a5 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_486500() {
-  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/486500.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.msl
index 0a5e6da..c0a151f 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_486500(texture3d<int, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  int4 arg_2 = int4(0);
+  uint3 arg_1 = uint3(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.spvasm
index 7b219df..cdc1231 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %19 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_486500 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_486500
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_486500
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_486500
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_486500
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_486500
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_486500
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.wgsl
index 8a03a81..bea8b44 100644
--- a/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/486500.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, write>;
 
 fn textureStore_486500() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl
index 940719b..accfa13 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32sint, write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
 fn textureStore_4c454f() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.dxc.hlsl
index 0fcd9a8..113213f 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_4c454f() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.fxc.hlsl
index 0fcd9a8..113213f 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_4c454f() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.msl
index 03846dc..6cff1e9 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_4c454f(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.spvasm
index 39e9b43..593df6e 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -43,54 +43,57 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %26 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_4c454f = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %36 = OpLoad %uint %arg_2
-         %37 = OpCompositeConstruct %v3uint %34 %35 %36
-         %38 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_4c454f
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_4c454f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_4c454f
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_4c454f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_4c454f
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_4c454f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.wgsl
index 59de4ec..29e2d28 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureStore_4c454f() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl
index e17d98f..65547f4c 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32uint, write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
 fn textureStore_4d359d() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.dxc.hlsl
index e10746c..82e2e58 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_4d359d() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.fxc.hlsl
index e10746c..82e2e58 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_4d359d() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.msl
index 4ac18bc..7f3c1b3 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_4d359d(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.spvasm
index 76be202..9db4aeb 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,56 +42,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_4d359d = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_4d359d
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_4d359d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_4d359d
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_4d359d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_4d359d
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_4d359d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.wgsl
index 19c62dd..ae6aa59 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureStore_4d359d() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
index fbe26ee..8a4c152 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8snorm, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_4fc057() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.dxc.hlsl
index ee4b614..3ad78a4 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_4fc057() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.fxc.hlsl
index ee4b614..3ad78a4 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_4fc057() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.glsl
index 039e0bb..a61ea79 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_4fc057() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_4fc057() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_4fc057() {
-  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/4fc057.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.msl
index c7d5dbb..d3ed57b 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_4fc057(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.spvasm
index 710a585..f3cfd34 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_4fc057 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_4fc057
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_4fc057
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_4fc057
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_4fc057
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_4fc057
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_4fc057
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
index 6cf8c4d..caa193c 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureStore_4fc057() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl
index bea26ba..623255e 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32uint, write>, coords: vec2<u32>, value: vec4<u32>)
 fn textureStore_506a71() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.dxc.hlsl
index f75271e..8f0257d 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_506a71() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.fxc.hlsl
index f75271e..8f0257d 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_506a71() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.msl
index 1e20709..d55f5d8 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_506a71(texture2d<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  uint4 arg_2 = uint4(0u);
+  uint2 arg_1 = uint2(1u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.spvasm
index 1f5a9ed..ec7574f 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,44 +41,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_506a71 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_506a71
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_506a71
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_506a71
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_506a71
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_506a71
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_506a71
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.wgsl
index 476f5e7..a8dea61 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, write>;
 
 fn textureStore_506a71() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl
index d2c793f..c9fefcef 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32sint, write>, coords: vec2<u32>, value: vec4<i32>)
 fn textureStore_52f503() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.dxc.hlsl
index 04d3b35..7093326 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_52f503() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.fxc.hlsl
index 04d3b35..7093326 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_52f503() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.glsl
index c606352..d548df8 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_52f503() {
-  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/52f503.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.msl
index 7bdcade..210163c 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_52f503(texture2d<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  int4 arg_2 = int4(0);
+  uint2 arg_1 = uint2(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.spvasm
index 73053df..b5967d5 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_52f503 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_52f503
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_52f503
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_52f503
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_52f503
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_52f503
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_52f503
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.wgsl
index e313fcc..5fafa0d 100644
--- a/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/52f503.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, write>;
 
 fn textureStore_52f503() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl
index 3aaeaa0..eaab31e 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32float, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_5841f8() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.dxc.hlsl
index a823f25..eadabe6 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_5841f8() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.fxc.hlsl
index a823f25..eadabe6 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_5841f8() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.glsl
index ae1b777..fc888dd 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_5841f8() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_5841f8() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_5841f8() {
-  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/5841f8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.msl
index 7f3b6ae..598bc90 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_5841f8(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.spvasm
index ad31cfd..c12f982 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_5841f8 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_5841f8
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_5841f8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_5841f8
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_5841f8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_5841f8
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_5841f8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.wgsl
index 6e57d8d..bd76946 100644
--- a/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5841f8.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureStore_5841f8() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl
index bd75214..affb43a 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8snorm, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_59a0ab() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.dxc.hlsl
index 717254e..88f5a2d 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_59a0ab() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.fxc.hlsl
index 717254e..88f5a2d 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_59a0ab() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.glsl
index 3cdcbf3..442c0c8 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_59a0ab() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_59a0ab() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_59a0ab() {
-  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/59a0ab.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.msl
index a22db66..15898bf 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_59a0ab(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.spvasm
index 3427873..4e2f6e7 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_59a0ab = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_59a0ab
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_59a0ab
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_59a0ab
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_59a0ab
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_59a0ab
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_59a0ab
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.wgsl
index a481390..90e9ec8 100644
--- a/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/59a0ab.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureStore_59a0ab() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
index 8eba27a..7c83c5a 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_5a2f8f() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.dxc.hlsl
index f600277..bbcf0cf 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_5a2f8f() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.fxc.hlsl
index f600277..bbcf0cf 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_5a2f8f() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.msl
index 7ffe1a4..3368907 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_5a2f8f(texture1d<int, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.spvasm
index 8fd6437..d9aa5fa 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_5a2f8f = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
                OpStore %arg_1 %int_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_5a2f8f
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_5a2f8f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_5a2f8f
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_5a2f8f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_5a2f8f
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5a2f8f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
index 444c40b..99ec886 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_5a2f8f() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl
index 12d19f5..241e4cc 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32uint, write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
 fn textureStore_5bc4f3() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.dxc.hlsl
index fb3394f..d5e0bc4 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_5bc4f3() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.fxc.hlsl
index fb3394f..d5e0bc4 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_5bc4f3() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.msl
index 7983b81..f210ad5 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_5bc4f3(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.spvasm
index 6603a0f..ee825f4 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,54 +42,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %26 = OpConstantNull %v4uint
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_5bc4f3 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2uint %arg_1
-         %33 = OpCompositeExtract %uint %32 0
-         %34 = OpCompositeExtract %uint %32 1
-         %35 = OpLoad %uint %arg_2
-         %36 = OpCompositeConstruct %v3uint %33 %34 %35
-         %37 = OpLoad %v4uint %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_5bc4f3
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_5bc4f3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_5bc4f3
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_5bc4f3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_5bc4f3
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_5bc4f3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.wgsl
index 1c223d6..e1578ba 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureStore_5bc4f3() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl
index 6638789..93a6d15 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8sint, write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
 fn textureStore_5ddc61() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.dxc.hlsl
index 6126253..cac835d 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_5ddc61() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.fxc.hlsl
index 6126253..cac835d 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_5ddc61() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.glsl
index 49630cf..df933c9 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_5ddc61() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_5ddc61() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_5ddc61() {
-  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/5ddc61.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.msl
index d02d76e..da2667b 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_5ddc61(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.spvasm
index 962f216..e0e9b55 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_5ddc61 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_5ddc61
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_5ddc61
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_5ddc61
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_5ddc61
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_5ddc61
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_5ddc61
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.wgsl
index dc049db..cd6c1f4 100644
--- a/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5ddc61.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureStore_5ddc61() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl
index 3cb1f9e..bcc40ed 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8snorm, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_5f9a49() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.dxc.hlsl
index 37a52f0..9f0aa65 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_5f9a49() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.fxc.hlsl
index 37a52f0..9f0aa65 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_5f9a49() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.glsl
index 648faf6..be9a922 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_5f9a49() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_5f9a49() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_5f9a49() {
-  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/5f9a49.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.msl
index add811e..22d41be 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_5f9a49(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.spvasm
index 435a41b..7a17377 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_5f9a49 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_5f9a49
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_5f9a49
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_5f9a49
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_5f9a49
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_5f9a49
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_5f9a49
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.wgsl
index 951d70c..8bcf205 100644
--- a/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5f9a49.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureStore_5f9a49() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl
index 94aaf8b..ee3842c 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32float, write>, coords: u32, value: vec4<f32>)
 fn textureStore_602b5a() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.dxc.hlsl
index d65e673..11d300d 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_602b5a() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.fxc.hlsl
index d65e673..11d300d 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_602b5a() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.msl
index f5d1847..ffc25e3 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_602b5a(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.spvasm
index 534c8e1..46c41f9 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,40 +44,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_602b5a = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_602b5a
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_602b5a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_602b5a
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_602b5a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_602b5a
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_602b5a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.wgsl
index ca22b44..2bd7ed1 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_602b5a() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl
index e48ef90..68a1d18 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8unorm, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_60975f() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.dxc.hlsl
index 15c91c6..5f9b1c9 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_60975f() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.fxc.hlsl
index 15c91c6..5f9b1c9 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_60975f() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.glsl
index 0a167a8..9f73ce3 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_60975f() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_60975f() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_60975f() {
-  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/60975f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.msl
index e70fe51..3882459 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_60975f(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.spvasm
index 7807d15..35a3e0d 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_60975f = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_60975f
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_60975f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_60975f
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_60975f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_60975f
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_60975f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
index bdd52cc..319364f 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureStore_60975f() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl
index eb287ee..88879be 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32float, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_658a74() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.dxc.hlsl
index e611206..dc2f280 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_658a74() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.fxc.hlsl
index e611206..dc2f280 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_658a74() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.msl
index d121d3c..a310879 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_658a74(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.spvasm
index 52fc52c..ab14481 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,54 +42,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_658a74 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_658a74
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_658a74
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_658a74
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_658a74
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_658a74
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_658a74
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.wgsl
index c29799b..d635e16 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureStore_658a74() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
index 4f6e6df..12fea92 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_682fd6() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.dxc.hlsl
index 613ddb2..972a97e 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_682fd6() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.fxc.hlsl
index 613ddb2..972a97e 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_682fd6() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.msl
index 8ef52b0..0d2c30e 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_682fd6(texture2d<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  uint4 arg_2 = uint4(0u);
+  int2 arg_1 = int2(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.spvasm
index e7ffff9..d69210f 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,44 +42,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_682fd6 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_682fd6
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_682fd6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_682fd6
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_682fd6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_682fd6
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_682fd6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
index a7d1e07..b887646 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, write>;
 
 fn textureStore_682fd6() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl
index 5548e40..89f19ea 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32float, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_699a1b() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.dxc.hlsl
index 68a4450..cc8bc8b 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_699a1b() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.fxc.hlsl
index 68a4450..cc8bc8b 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_699a1b() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.glsl
index b342728..c418a4c 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_699a1b() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_699a1b() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_699a1b() {
-  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/699a1b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.msl
index 57da1da..635d014 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_699a1b(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.spvasm
index 2c1021a..1b2bab9 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_699a1b = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_699a1b
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_699a1b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_699a1b
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_699a1b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_699a1b
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_699a1b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.wgsl
index f40f039..e15ec37 100644
--- a/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/699a1b.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureStore_699a1b() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
index bed4262..8c49a1a 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_6b75c3() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.dxc.hlsl
index d1842f9..1da026a 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_6b75c3() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.fxc.hlsl
index d1842f9..1da026a 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_6b75c3() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.msl
index 525cdb8..4637282 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_6b75c3(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.spvasm
index 436599f..a170644 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_6b75c3 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_6b75c3
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_6b75c3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_6b75c3
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_6b75c3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_6b75c3
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_6b75c3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
index d5492bb..da4a7c7 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_6b75c3() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
index d31db6a..2f19c1d 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_6b80d2() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.dxc.hlsl
index dc45c99..df5337a 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_6b80d2() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.fxc.hlsl
index dc45c99..df5337a 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_6b80d2() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.msl
index 4ec6f6e..872ebc4 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_6b80d2(texture1d<int, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.spvasm
index cc127a7..e068ee9 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_6b80d2 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
                OpStore %arg_1 %int_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_6b80d2
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_6b80d2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_6b80d2
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_6b80d2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_6b80d2
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_6b80d2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
index e83366d..6d34e25 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_6b80d2() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
index 21f50ca..6b2ab9a 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_6cff2e() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.dxc.hlsl
index 030b9a1..eb1d050 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6cff2e() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.fxc.hlsl
index 030b9a1..eb1d050 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6cff2e() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.glsl
index 31dca28..bd3b42a 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_6cff2e() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_6cff2e() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_6cff2e() {
-  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/6cff2e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.msl
index 47ac09a..62842d4 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_6cff2e(texture2d<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  uint4 arg_2 = uint4(0u);
+  int2 arg_1 = int2(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.spvasm
index 7907a00..e7c5b80 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_6cff2e = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_6cff2e
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_6cff2e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_6cff2e
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_6cff2e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_6cff2e
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_6cff2e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
index 37ba249..decce81 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, write>;
 
 fn textureStore_6cff2e() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl
index 1caeb3e..7260963 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_6da692() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.dxc.hlsl
index 2188ce1..3a0b352 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6da692() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.fxc.hlsl
index 2188ce1..3a0b352 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6da692() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.glsl
index c7bc567..8cc9b7c 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6da692() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6da692() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6da692() {
-  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/6da692.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.msl
index 305d2bd..4f4cf30 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_6da692(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.spvasm
index 4296871..3dc1804 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %26 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_6da692 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %36 = OpLoad %int %arg_2
-         %37 = OpCompositeConstruct %v3int %34 %35 %36
-         %38 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_6da692
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_6da692
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_6da692
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_6da692
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_6da692
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_6da692
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
index eb4983b..3aef0ec 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureStore_6da692() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl
index 23a8676..b10038e 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32uint, write>, coords: vec2<u32>, array_index: i32, value: vec4<u32>)
 fn textureStore_6f8642() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.dxc.hlsl
index 68d1cee..3c1a7e3 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6f8642() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.fxc.hlsl
index 68d1cee..3c1a7e3 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_6f8642() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.glsl
index c44aae7..47c47cc 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6f8642() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6f8642() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6f8642() {
-  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/6f8642.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.msl
index 5b98209..9b423b5 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_6f8642(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.spvasm
index cd9d76a..786268a 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_6f8642 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_6f8642
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_6f8642
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_6f8642
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_6f8642
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_6f8642
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_6f8642
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.wgsl
index 36630e4..cb9827a 100644
--- a/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6f8642.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureStore_6f8642() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl
index 7feec83..c758e8d 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32float, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_726472() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.dxc.hlsl
index 7730353..d825a22 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_726472() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.fxc.hlsl
index 7730353..d825a22 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_726472() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.msl
index 5f2f55c..a4358df 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_726472(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.spvasm
index 6670ea4..f981dac 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,42 +41,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_726472 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_726472
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_726472
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_726472
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_726472
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_726472
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_726472
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.wgsl
index b0866a3..1712bd8 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, write>;
 
 fn textureStore_726472() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl
index 08b9a1f..a7805f3 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32sint, write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
 fn textureStore_72fa64() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.dxc.hlsl
index 8de0613..1dbffbb 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_72fa64() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.fxc.hlsl
index 8de0613..1dbffbb 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_72fa64() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.msl
index 501db77..7dc7a4d 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_72fa64(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.spvasm
index 2f14a12..f1980f3 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -43,55 +43,58 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_72fa64 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_72fa64
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_72fa64
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_72fa64
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_72fa64
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_72fa64
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_72fa64
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.wgsl
index 0e90aab..a68ac82 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureStore_72fa64() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl
index c28f3a2..2063ea5 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8unorm, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_731349() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.dxc.hlsl
index 9647546..41c6295 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_731349() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.fxc.hlsl
index 9647546..41c6295 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_731349() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.glsl
index 2fc13d7..7873e23 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_731349() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_731349() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_731349() {
-  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/731349.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.msl
index f7898d7..4c20f23 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_731349(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.spvasm
index 0d4982f..d804641 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_731349 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_731349
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_731349
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_731349
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_731349
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_731349
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_731349
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
index eb1aa14..8269e63 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, write>;
 
 fn textureStore_731349() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl
index caabbdb..95ca71c 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8unorm, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_73bbbc() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.dxc.hlsl
index 689ab29..df29991 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_73bbbc() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.fxc.hlsl
index 689ab29..df29991 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_73bbbc() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.glsl
index 59505cb..f100d49 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_73bbbc() {
-  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/73bbbc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.msl
index 941e50f..df9a954 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_73bbbc(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.spvasm
index 8b04462..d968e79 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_73bbbc = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_73bbbc
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_73bbbc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_73bbbc
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_73bbbc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_73bbbc
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_73bbbc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.wgsl
index 7728131..a8c6754 100644
--- a/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/73bbbc.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, write>;
 
 fn textureStore_73bbbc() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl
index e085cce..80276c2 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_752da6() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.dxc.hlsl
index 74afe66..897f76c 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_752da6() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.fxc.hlsl
index 74afe66..897f76c 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_752da6() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.glsl
index 4c49f79..1d02b54 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_752da6() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_752da6() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_752da6() {
-  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/752da6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.msl
index 14805dc..34cacd9 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_752da6(texture2d<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  int4 arg_2 = int4(0);
+  int2 arg_1 = int2(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.spvasm
index 4b831a2..670bde4 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_752da6 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_752da6
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_752da6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_752da6
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_752da6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_752da6
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_752da6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
index 5ec1d8d..7f42960 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, write>;
 
 fn textureStore_752da6() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl
index 1850240..66154bc 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16uint, write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
 fn textureStore_779d14() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.dxc.hlsl
index 1d92629..d8cc420 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_779d14() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.fxc.hlsl
index 1d92629..d8cc420 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_779d14() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.glsl
index 3ad1db2..3bd1e15 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_779d14() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_779d14() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_779d14() {
-  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/779d14.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.msl
index 0d04ed0..cb582aa 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_779d14(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.spvasm
index f61b543..d686881 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %26 = OpConstantNull %v4uint
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_779d14 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2uint %arg_1
-         %33 = OpCompositeExtract %uint %32 0
-         %34 = OpCompositeExtract %uint %32 1
-         %35 = OpLoad %uint %arg_2
-         %36 = OpCompositeConstruct %v3uint %33 %34 %35
-         %37 = OpLoad %v4uint %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_779d14
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_779d14
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_779d14
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_779d14
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_779d14
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_779d14
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.wgsl
index 543447b..0af83b5 100644
--- a/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/779d14.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureStore_779d14() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
index 052401c..add7ba4 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_77c0ae() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.dxc.hlsl
index 04dafb0..f6f06f7 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_77c0ae() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.fxc.hlsl
index 04dafb0..f6f06f7 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_77c0ae() {
-  int2 arg_1 = (0).xx;
-  uint4 arg_2 = (0u).xxxx;
+  int2 arg_1 = (1).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.glsl
index ebdb907..1b74a4e 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_77c0ae() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_77c0ae() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_77c0ae() {
-  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/77c0ae.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.msl
index d7d8457..35bc870 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_77c0ae(texture2d<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  uint4 arg_2 = uint4(0u);
+  int2 arg_1 = int2(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.spvasm
index 6bacd0e..53da4ac 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_77c0ae = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_77c0ae
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_77c0ae
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_77c0ae
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_77c0ae
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_77c0ae
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_77c0ae
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
index 28994fc..2bcbf7b 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, write>;
 
 fn textureStore_77c0ae() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl
index c9fe455..3588d57 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32sint, write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
 fn textureStore_7bb211() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.dxc.hlsl
index 0074f0f..957b02a 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_7bb211() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.fxc.hlsl
index 0074f0f..957b02a 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_7bb211() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.msl
index 6d2729b..6941c58 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_7bb211(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.spvasm
index cb6aa19..afea97a 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,56 +42,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_7bb211 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_7bb211
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_7bb211
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_7bb211
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_7bb211
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_7bb211
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_7bb211
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.wgsl
index 990b9c1..27b0ce8 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureStore_7bb211() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
index 270a825..c51618c 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_7cec8d() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.dxc.hlsl
index d31432b..a90a31f 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_7cec8d() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.fxc.hlsl
index d31432b..a90a31f 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_7cec8d() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.glsl
index 05b54d9..5d8dfd7 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7cec8d() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7cec8d() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7cec8d() {
-  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/7cec8d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.msl
index bc68202..450a31a 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_7cec8d(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.spvasm
index b36ee5f..83c7715 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %26 = OpConstantNull %v4int
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_7cec8d = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2int %arg_1
-         %33 = OpCompositeExtract %int %32 0
-         %34 = OpCompositeExtract %int %32 1
-         %35 = OpLoad %int %arg_2
-         %36 = OpCompositeConstruct %v3int %33 %34 %35
-         %37 = OpLoad %v4int %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_7cec8d
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_7cec8d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_7cec8d
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_7cec8d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_7cec8d
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_7cec8d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
index 38fb600..77a6f71 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureStore_7cec8d() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl
index b64eb22..1728981 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16float, write>, coords: vec2<u32>, value: vec4<f32>)
 fn textureStore_7cf6e7() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.dxc.hlsl
index 516eb54..5ba45d9 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_7cf6e7() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.fxc.hlsl
index 516eb54..5ba45d9 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_7cf6e7() {
-  uint2 arg_1 = (0u).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint2 arg_1 = (1u).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.glsl
index dc0045b..7abe534 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_7cf6e7() {
-  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/7cf6e7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.msl
index f19febe..e69790b 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_7cf6e7(texture2d<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  float4 arg_2 = float4(0.0f);
+  uint2 arg_1 = uint2(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.spvasm
index d303e8f..78fb718 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_7cf6e7 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_7cf6e7
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_7cf6e7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_7cf6e7
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_7cf6e7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_7cf6e7
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_7cf6e7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.wgsl
index f93f1a0..4300c7d 100644
--- a/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cf6e7.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, write>;
 
 fn textureStore_7cf6e7() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
index 247b97c..6357ca2 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8unorm, write>, coords: i32, value: vec4<f32>)
 fn textureStore_7f7fae() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.dxc.hlsl
index 6d80e54..5cdb0c0 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_7f7fae() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.fxc.hlsl
index 6d80e54..5cdb0c0 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_7f7fae() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.msl
index a991af1..9b457ce 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_7f7fae(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.spvasm
index aace840..2727ee4 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_7f7fae = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_7f7fae
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_7f7fae
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_7f7fae
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_7f7fae
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_7f7fae
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_7f7fae
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
index 9815899..b36d9e0 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_7f7fae() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl
index f2bae96..be1271a 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_804942() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.dxc.hlsl
index f2f0dd3..e663487 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_804942() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.fxc.hlsl
index f2f0dd3..e663487 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_804942() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.glsl
index e99ccc5..9cf56e0 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_804942() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_804942() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_804942() {
-  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/804942.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.msl
index d2e755d..3d5af50 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_804942(texture2d<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  int4 arg_2 = int4(0);
+  int2 arg_1 = int2(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.spvasm
index b6cc2c9..a48d006 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_804942 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_804942
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_804942
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_804942
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_804942
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_804942
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_804942
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
index 171f249..ab6fef7 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, write>;
 
 fn textureStore_804942() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl
index d38a59f..96b5ec1 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8snorm, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_805dae() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.dxc.hlsl
index b251d9f..36697f9 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_805dae() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.fxc.hlsl
index b251d9f..36697f9 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_805dae() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.glsl
index 77e3041..76c472a 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_805dae() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_805dae() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_805dae() {
-  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/805dae.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.msl
index 8ba8e48..a516aaf 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_805dae(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.spvasm
index 0bcb46d..9dc18fa 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_805dae = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_805dae
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_805dae
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_805dae
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_805dae
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_805dae
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_805dae
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
index 3e6f446..4c2b4c3 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, write>;
 
 fn textureStore_805dae() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
index 58dc1d8..e0476d9 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_83bcc1() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.dxc.hlsl
index b606a3a..cd22634 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_83bcc1() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.fxc.hlsl
index b606a3a..cd22634 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_83bcc1() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.msl
index bf59f21..d1016d0 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_83bcc1(texture1d<uint, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.spvasm
index da8b6bf..8bd3f62 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -46,41 +46,43 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %21 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_83bcc1 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_83bcc1
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_83bcc1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_83bcc1
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_83bcc1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_83bcc1
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_83bcc1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
index 7625aa6..eec57a4 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_83bcc1() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl
index a48109e..71d6beb 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_872747() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.dxc.hlsl
index 9c937a5..d70ea27 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_872747() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.fxc.hlsl
index 9c937a5..d70ea27 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_872747() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.msl
index fcb5caa..0306531 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_872747(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.spvasm
index a197ec4..8d8d31a 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,40 +44,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_872747 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_872747
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_872747
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_872747
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_872747
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_872747
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_872747
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
index 34d6be2..32ed1eb 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_872747() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl
index 5c1529a..8924093 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba16float, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_8b9310() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.dxc.hlsl
index 63e02b9..9be824a 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_8b9310() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.fxc.hlsl
index 63e02b9..9be824a 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_8b9310() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.glsl
index 07179e6..01aa711 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_8b9310() {
-  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);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.msl
index a56cd43..43ca7a4 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_8b9310(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.spvasm
index 6dcd46e..c920206 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_8b9310 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_8b9310
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_8b9310
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_8b9310
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_8b9310
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_8b9310
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_8b9310
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.wgsl
index f4095ea..aa74595 100644
--- a/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8b9310.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, write>;
 
 fn textureStore_8b9310() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl
index 4798b48..cf485b6 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32sint, write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
 fn textureStore_8bb287() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.dxc.hlsl
index 69cee8c..a21698e 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_8bb287() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.fxc.hlsl
index 69cee8c..a21698e 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_8bb287() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.glsl
index 88ef4d6..0fd9536 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_8bb287() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_8bb287() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_8bb287() {
-  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/8bb287.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.msl
index f5202e7..576d3df 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_8bb287(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.spvasm
index 1c82ad5..e21dcae 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %26 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8bb287 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %36 = OpLoad %uint %arg_2
-         %37 = OpCompositeConstruct %v3uint %34 %35 %36
-         %38 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_8bb287
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8bb287
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_8bb287
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_8bb287
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_8bb287
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_8bb287
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.wgsl
index a8e7a96..11d1d8f 100644
--- a/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8bb287.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureStore_8bb287() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl
index d5510a9..df2a149 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16sint, write>, coords: u32, value: vec4<i32>)
 fn textureStore_8c76e9() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.dxc.hlsl
index 94d7ce9..6facd77 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_8c76e9() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.fxc.hlsl
index 94d7ce9..6facd77 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_8c76e9() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.msl
index c5331dd..08136cd 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_8c76e9(texture1d<int, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.spvasm
index dff91f3..d1b88d3 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %21 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8c76e9 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_8c76e9
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_8c76e9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_8c76e9
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8c76e9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_8c76e9
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8c76e9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.wgsl
index 41c78a3..8b5ce79 100644
--- a/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8c76e9.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_8c76e9() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl
index ea6156b..f17830e 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8uint, write>, coords: vec2<u32>, value: vec4<u32>)
 fn textureStore_8dc54f() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.dxc.hlsl
index 9356f2b..306c254 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8dc54f() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.fxc.hlsl
index 9356f2b..306c254 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8dc54f() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.glsl
index c736632..53f7885 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_8dc54f() {
-  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/8dc54f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.msl
index a4b43c5..4655fad 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_8dc54f(texture2d<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  uint4 arg_2 = uint4(0u);
+  uint2 arg_1 = uint2(1u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.spvasm
index f6c0c9d..5f5ada3 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8dc54f = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_8dc54f
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_8dc54f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_8dc54f
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8dc54f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_8dc54f
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8dc54f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.wgsl
index 45a3bce..a655b36 100644
--- a/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8dc54f.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, write>;
 
 fn textureStore_8dc54f() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
index 3920a85..96639ec 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_8e0479() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.dxc.hlsl
index 24d93ef..e3875a4 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8e0479() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.fxc.hlsl
index 24d93ef..e3875a4 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8e0479() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.glsl
index 0a78791..d070bb9 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8e0479() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8e0479() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8e0479() {
-  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/8e0479.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.msl
index 6ad4aba..9634e28 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_8e0479(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.spvasm
index baca5da..e891980 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %26 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8e0479 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %36 = OpLoad %int %arg_2
-         %37 = OpCompositeConstruct %v3int %34 %35 %36
-         %38 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_8e0479
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8e0479
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_8e0479
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_8e0479
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_8e0479
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_8e0479
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
index 62cc919..bc56661 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureStore_8e0479() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl
index cadc370..963166a 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8unorm, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_8ed9f8() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.dxc.hlsl
index 0660af5..b187376 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_8ed9f8() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.fxc.hlsl
index 0660af5..b187376 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_8ed9f8() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.glsl
index 1f7cd6b..be631e3 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_8ed9f8() {
-  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);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.msl
index bb463d3..ee96051 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_8ed9f8(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.spvasm
index f6fe75a..2ee7bf3 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_8ed9f8 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_8ed9f8
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_8ed9f8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_8ed9f8
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_8ed9f8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_8ed9f8
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_8ed9f8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.wgsl
index b650269..77a7d50 100644
--- a/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8ed9f8.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, write>;
 
 fn textureStore_8ed9f8() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
index dd7f731..12d406f 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba16sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_8f71a1() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.dxc.hlsl
index 513e377..dfdbda8 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_8f71a1() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.fxc.hlsl
index 513e377..dfdbda8 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_8f71a1() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.glsl
index ebb51a8..90fded8 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_8f71a1() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_8f71a1() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_8f71a1() {
-  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/8f71a1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.msl
index bf5a54e..b3277b9 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_8f71a1(texture3d<int, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  int4 arg_2 = int4(0);
+  int3 arg_1 = int3(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.spvasm
index 1492698..2b06178 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8f71a1 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v3int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_8f71a1
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_8f71a1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_8f71a1
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_8f71a1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_8f71a1
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_8f71a1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
index 709f78e..ff0e20c 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, write>;
 
 fn textureStore_8f71a1() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl
index 9c6fc3e..79cf930 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32uint, write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
 fn textureStore_8ff674() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.dxc.hlsl
index 4265f0c..ade6cd2 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8ff674() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.fxc.hlsl
index 4265f0c..ade6cd2 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_8ff674() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.glsl
index cf082e9..4934abc 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8ff674() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8ff674() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8ff674() {
-  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/8ff674.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.msl
index 051723b..e7e60b1 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_8ff674(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.spvasm
index 768cb93..ef45f7e 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_8ff674 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_8ff674
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_8ff674
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_8ff674
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_8ff674
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_8ff674
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_8ff674
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.wgsl
index dc5d1f2..405abd5 100644
--- a/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8ff674.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureStore_8ff674() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl
index 6548f0e..0d1dcd6 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8sint, write>, coords: u32, value: vec4<i32>)
 fn textureStore_958353() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.dxc.hlsl
index 07fc6aa..61de862 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_958353() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.fxc.hlsl
index 07fc6aa..61de862 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_958353() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.msl
index bad5668..d1fcf04 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_958353(texture1d<int, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.spvasm
index bc99529..41534d4 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %21 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_958353 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_958353
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_958353
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_958353
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_958353
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_958353
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_958353
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.wgsl
index 3da0474..436e67b 100644
--- a/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/958353.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_958353() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl
index 404fd19..37080fa 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8snorm, write>, coords: u32, value: vec4<f32>)
 fn textureStore_959d94() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.dxc.hlsl
index 807d0de..9119e4a 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_959d94() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.fxc.hlsl
index 807d0de..9119e4a 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_959d94() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.msl
index bd790af..515eff2 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_959d94(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.spvasm
index 33e3eab..f40074f 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_959d94 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_959d94
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_959d94
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_959d94
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_959d94
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_959d94
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_959d94
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.wgsl
index d9300eb..1c4d7e2 100644
--- a/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/959d94.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_959d94() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl
index 0b1037d..e93a933 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32sint, write>, coords: vec2<u32>, value: vec4<i32>)
 fn textureStore_95e452() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.dxc.hlsl
index e602bae..980ad86 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_95e452() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.fxc.hlsl
index e602bae..980ad86 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_95e452() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.glsl
index e25384d..64f694f 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_95e452() {
-  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/95e452.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.msl
index ce3297b..3326a49 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_95e452(texture2d<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  int4 arg_2 = int4(0);
+  uint2 arg_1 = uint2(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.spvasm
index 1fd3674..04c19d1 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_95e452 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_95e452
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_95e452
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_95e452
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_95e452
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_95e452
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_95e452
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.wgsl
index 6eaf3fa..ab3968fb 100644
--- a/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/95e452.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, write>;
 
 fn textureStore_95e452() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl
index ee132a7..be1ee39 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_969534() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.dxc.hlsl
index abe1eac..105c863 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_969534() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.fxc.hlsl
index abe1eac..105c863 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_969534() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.msl
index aed04dd..ce5ff51 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_969534(texture1d<int, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.spvasm
index 74def9c..475896e 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_969534 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
                OpStore %arg_1 %int_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_969534
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_969534
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_969534
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_969534
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_969534
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_969534
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
index 259cbc8..df5ca1d 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_969534() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl
index bbd789c..c722fc7 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32sint, write>, coords: vec2<i32>, array_index: u32, value: vec4<i32>)
 fn textureStore_9938b7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.dxc.hlsl
index 80692a9..392499e 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_9938b7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.fxc.hlsl
index 80692a9..392499e 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_9938b7() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.glsl
index 3a267d7..d95242f 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_9938b7() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_9938b7() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_9938b7() {
-  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/9938b7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.msl
index 2a67476..5ebe2ac 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_9938b7(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.spvasm
index 3874961..35871f0 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,56 +41,59 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_9938b7 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_9938b7
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_9938b7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_9938b7
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_9938b7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_9938b7
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_9938b7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.wgsl
index b2c3376..a4045a5 100644
--- a/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9938b7.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureStore_9938b7() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
index d732945..add0fbc 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_9a3ecc() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.dxc.hlsl
index f6dae1c..0225f3a 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9a3ecc() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.fxc.hlsl
index f6dae1c..0225f3a 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9a3ecc() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.glsl
index 9beb825..70c00a6 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_9a3ecc() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_9a3ecc() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_9a3ecc() {
-  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/9a3ecc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.msl
index 44b8e33..9c2fa40 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_9a3ecc(texture3d<int, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  int4 arg_2 = int4(0);
+  int3 arg_1 = int3(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.spvasm
index 7b6db7c..5548c20 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_9a3ecc = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v3int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_9a3ecc
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_9a3ecc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_9a3ecc
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_9a3ecc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_9a3ecc
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_9a3ecc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
index 04f9424..a64c7b3 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, write>;
 
 fn textureStore_9a3ecc() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl
index fd44463..43c26e5 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8unorm, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_9d8668() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.dxc.hlsl
index 0ad43ef..20c597c 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_9d8668() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.fxc.hlsl
index 0ad43ef..20c597c 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_9d8668() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.glsl
index 5600dbe..27ef778 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d8668() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d8668() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d8668() {
-  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/9d8668.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.msl
index e0efa79..7bbee65 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_9d8668(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.spvasm
index 8c3095c..aa6a4d3 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_9d8668 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_9d8668
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_9d8668
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_9d8668
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_9d8668
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_9d8668
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_9d8668
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.wgsl
index b04ebc4..5241933 100644
--- a/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d8668.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureStore_9d8668() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
index 46518d6..68cd648 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_9d9cd5() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.dxc.hlsl
index 63531a6..4451b9d 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_9d9cd5() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.fxc.hlsl
index 63531a6..4451b9d 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_9d9cd5() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.glsl
index 05a0d53..7bd328d 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d9cd5() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d9cd5() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d9cd5() {
-  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/9d9cd5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.msl
index 48036cd..b9e24ad 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_9d9cd5(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.spvasm
index 9e32370..4c7a242 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_9d9cd5 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_9d9cd5
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_9d9cd5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_9d9cd5
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_9d9cd5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_9d9cd5
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_9d9cd5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
index e34f0eb..4d43460 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureStore_9d9cd5() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
index 8175a48..859fd3c 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_9e3ec5() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.dxc.hlsl
index 0c02acb..22ca488 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9e3ec5() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.fxc.hlsl
index 0c02acb..22ca488 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9e3ec5() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.glsl
index 19ace0b..33a744d 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9e3ec5() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9e3ec5() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9e3ec5() {
-  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/9e3ec5.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.msl
index 942418d..2c1da1d 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_9e3ec5(texture2d<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  int4 arg_2 = int4(0);
+  int2 arg_1 = int2(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.spvasm
index 4ce3d9e..e2c8e64 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_9e3ec5 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_9e3ec5
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_9e3ec5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_9e3ec5
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_9e3ec5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_9e3ec5
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_9e3ec5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
index a825923..786a000 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, write>;
 
 fn textureStore_9e3ec5() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl
index 46cfbcb..fa9d76b 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rg32sint, write>, coords: vec2<u32>, value: vec4<i32>)
 fn textureStore_9f5318() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.dxc.hlsl
index 68caac1..db1e551 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9f5318() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.fxc.hlsl
index 68caac1..db1e551 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_9f5318() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.msl
index 190288b..58486e7 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_9f5318(texture2d<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  int4 arg_2 = int4(0);
+  uint2 arg_1 = uint2(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.spvasm
index 821ca97..93dec97 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,44 +42,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_9f5318 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_9f5318
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_9f5318
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_9f5318
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_9f5318
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_9f5318
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_9f5318
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.wgsl
index 1ab319c..1b711ae 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, write>;
 
 fn textureStore_9f5318() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl
index dc02938..0ed2545 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8uint, write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
 fn textureStore_9f7cea() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.dxc.hlsl
index 9decbcd..c06bbdf 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_9f7cea() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.fxc.hlsl
index 9decbcd..c06bbdf 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_9f7cea() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.glsl
index a561d87..a429114 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_9f7cea() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_9f7cea() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_9f7cea() {
-  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/9f7cea.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.msl
index c6000bd..0b17dac 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_9f7cea(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.spvasm
index 71767cd..d6a2eed 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_9f7cea = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_9f7cea
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_9f7cea
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_9f7cea
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_9f7cea
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_9f7cea
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_9f7cea
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.wgsl
index 6b55981..c8cceff 100644
--- a/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9f7cea.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureStore_9f7cea() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl
index 7ff74cd..2088a74 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16float, write>, coords: vec2<u32>, array_index: u32, value: vec4<f32>)
 fn textureStore_a0f96e() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.dxc.hlsl
index 97ab824..24a137e 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_a0f96e() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.fxc.hlsl
index 97ab824..24a137e 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_a0f96e() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.glsl
index 276a6f9..fe82253 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a0f96e() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a0f96e() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a0f96e() {
-  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/a0f96e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.msl
index 03c6f52..8d5db86 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_a0f96e(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.spvasm
index 5277c6c..b04517c 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,52 +41,54 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_a0f96e = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2uint %arg_1
-         %31 = OpCompositeExtract %uint %30 0
-         %32 = OpCompositeExtract %uint %30 1
-         %33 = OpLoad %uint %arg_2
-         %34 = OpCompositeConstruct %v3uint %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2uint %arg_1
+         %34 = OpCompositeExtract %uint %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpLoad %uint %arg_2
+         %37 = OpCompositeConstruct %v3uint %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_a0f96e
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_a0f96e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_a0f96e
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_a0f96e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_a0f96e
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_a0f96e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.wgsl
index d9babfe..7ed7210 100644
--- a/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a0f96e.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureStore_a0f96e() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl
index d2c7483..4be46e8 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8sint, write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
 fn textureStore_a1352c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.dxc.hlsl
index f9c5558..c9ae03c 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_a1352c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.fxc.hlsl
index f9c5558..c9ae03c 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_a1352c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.glsl
index 8d0b050..fba754f 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_a1352c() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_a1352c() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_a1352c() {
-  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/a1352c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.msl
index 275794f..2eecb90 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_a1352c(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.spvasm
index 60d2114..b6dc94d 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %26 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_a1352c = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %36 = OpLoad %uint %arg_2
-         %37 = OpCompositeConstruct %v3uint %34 %35 %36
-         %38 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_a1352c
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_a1352c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_a1352c
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_a1352c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_a1352c
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_a1352c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.wgsl
index 7132f14..0974686 100644
--- a/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a1352c.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureStore_a1352c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl
index ded9f8e..dc78645 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16float, write>, coords: u32, value: vec4<f32>)
 fn textureStore_a4c338() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.dxc.hlsl
index fbaa791..6f5fbf1 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_a4c338() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.fxc.hlsl
index fbaa791..6f5fbf1 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_a4c338() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.msl
index f4ae68c..5643f17 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_a4c338(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.spvasm
index 3ff8ca1..d92f716 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_a4c338 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_a4c338
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_a4c338
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_a4c338
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_a4c338
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_a4c338
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_a4c338
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.wgsl
index 49ef550..96e6f1a 100644
--- a/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a4c338.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_a4c338() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl
index 34851f6..7e5099f 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba32float, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_a5e80d() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.dxc.hlsl
index 89f734c..1a1241a 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_a5e80d() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.fxc.hlsl
index 89f734c..1a1241a 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_a5e80d() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.glsl
index 0bf3507..a694566 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_a5e80d() {
-  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);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.msl
index 09345d4..e00f52f 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_a5e80d(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.spvasm
index fc7f43e..4833576 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_a5e80d = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_a5e80d
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_a5e80d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_a5e80d
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_a5e80d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_a5e80d
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a5e80d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.wgsl
index 3976579..61026f0 100644
--- a/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a5e80d.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, write>;
 
 fn textureStore_a5e80d() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl
index 45715a3..8b6da07 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16float, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_a6a986() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.dxc.hlsl
index 87243b7..5102816 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_a6a986() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.fxc.hlsl
index 87243b7..5102816 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_a6a986() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.glsl
index 63d69b0..2249883 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a6a986() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a6a986() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_a6a986() {
-  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/a6a986.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.msl
index b331c2d..e4fa7fa 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_a6a986(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.spvasm
index e1eee7c..4186142 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_a6a986 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_a6a986
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_a6a986
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_a6a986
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_a6a986
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_a6a986
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_a6a986
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.wgsl
index 5ca9a01..eae1eee 100644
--- a/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a6a986.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureStore_a6a986() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl
index ee01fa7..fc02f9f 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32uint, write>, coords: u32, value: vec4<u32>)
 fn textureStore_a6e78f() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.dxc.hlsl
index 1bcd821..0314856 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_a6e78f() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.fxc.hlsl
index 1bcd821..0314856 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_a6e78f() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.msl
index c8eae4c..07ee9e6 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_a6e78f(texture1d<uint, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.spvasm
index 8799481..85835b1 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_a6e78f = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_a6e78f
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_a6e78f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_a6e78f
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_a6e78f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_a6e78f
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a6e78f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.wgsl
index 5c8eedc..182f6be 100644
--- a/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a6e78f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_a6e78f() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl
index 0613670..4560e16 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32uint, write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
 fn textureStore_a9426c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.dxc.hlsl
index d8b282f..7e1d847 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_a9426c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.fxc.hlsl
index d8b282f..7e1d847 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_a9426c() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.glsl
index 8289c23..61410c5 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_a9426c() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_a9426c() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_a9426c() {
-  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/a9426c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.msl
index d04e4a7..cd1bca4 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_a9426c(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.spvasm
index 51c831c..e9d783b 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %26 = OpConstantNull %v4uint
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_a9426c = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2uint %arg_1
-         %33 = OpCompositeExtract %uint %32 0
-         %34 = OpCompositeExtract %uint %32 1
-         %35 = OpLoad %uint %arg_2
-         %36 = OpCompositeConstruct %v3uint %33 %34 %35
-         %37 = OpLoad %v4uint %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_a9426c
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_a9426c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_a9426c
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_a9426c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_a9426c
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_a9426c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.wgsl
index 32f329d..457d2be 100644
--- a/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/a9426c.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureStore_a9426c() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
index e92ea38..8fb06fb 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rg32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_ac67aa() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.dxc.hlsl
index b36799d..4ff2367 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_ac67aa() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.fxc.hlsl
index b36799d..4ff2367 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_ac67aa() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.msl
index bff5a97..04fa0ba 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_ac67aa(texture3d<uint, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  uint4 arg_2 = uint4(0u);
+  int3 arg_1 = int3(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.spvasm
index df550ab..4fe2977 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,44 +42,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %19 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_ac67aa = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_ac67aa
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_ac67aa
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_ac67aa
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_ac67aa
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_ac67aa
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_ac67aa
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
index 2145e3a..e6d0f63 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, write>;
 
 fn textureStore_ac67aa() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl
index 30430d6..feace1b 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba32uint, write>, coords: vec2<u32>, value: vec4<u32>)
 fn textureStore_aeb38a() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.dxc.hlsl
index 66013e5..63340ad 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_aeb38a() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.fxc.hlsl
index 66013e5..63340ad 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_aeb38a() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.glsl
index adbba2a..dc43e68 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_aeb38a() {
-  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/aeb38a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.msl
index d8e7b55..bf39553 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_aeb38a(texture2d<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  uint4 arg_2 = uint4(0u);
+  uint2 arg_1 = uint2(1u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.spvasm
index 5e539c6..4a04967 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_aeb38a = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_aeb38a
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_aeb38a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_aeb38a
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_aeb38a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_aeb38a
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_aeb38a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.wgsl
index 588457c..cacf704 100644
--- a/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/aeb38a.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, write>;
 
 fn textureStore_aeb38a() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl
index 68a682b..c98d5f7 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8uint, write>, coords: vec2<u32>, array_index: u32, value: vec4<u32>)
 fn textureStore_b42fd3() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.dxc.hlsl
index 9088ca1..a6cb47a 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_b42fd3() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.fxc.hlsl
index 9088ca1..a6cb47a 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_b42fd3() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.glsl
index 55586e2..3cf8367 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_b42fd3() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_b42fd3() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_b42fd3() {
-  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/b42fd3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.msl
index 9896b03..1f5972d 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_b42fd3(texture2d_array<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.spvasm
index 9e42c7c..09ccb9d 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %24 = OpConstantNull %uint
+         %25 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %26 = OpConstantNull %v4uint
+         %27 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %30 = OpConstantNull %v4uint
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_b42fd3 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2uint %arg_1
-         %33 = OpCompositeExtract %uint %32 0
-         %34 = OpCompositeExtract %uint %32 1
-         %35 = OpLoad %uint %arg_2
-         %36 = OpCompositeConstruct %v3uint %33 %34 %35
-         %37 = OpLoad %v4uint %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2uint %arg_1
+         %35 = OpCompositeExtract %uint %34 0
+         %36 = OpCompositeExtract %uint %34 1
+         %37 = OpLoad %uint %arg_2
+         %38 = OpCompositeConstruct %v3uint %35 %36 %37
+         %39 = OpLoad %v4uint %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_b42fd3
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_b42fd3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_b42fd3
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_b42fd3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_b42fd3
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_b42fd3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.wgsl
index d150b77..3619cb1 100644
--- a/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b42fd3.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureStore_b42fd3() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
index c0eedb2..b0fa1ca 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_b706b1() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.dxc.hlsl
index 4e96114..bc4e46f 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_b706b1() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.fxc.hlsl
index 4e96114..bc4e46f 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_b706b1() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.glsl
index 72e03e7..f8c512a 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_b706b1() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_b706b1() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_b706b1() {
-  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/b706b1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.msl
index 635cb6c..fed5f14 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_b706b1(texture3d<int, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  int4 arg_2 = int4(0);
+  int3 arg_1 = int3(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.spvasm
index 32c2bcb..363567e 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_b706b1 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v3int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_b706b1
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_b706b1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_b706b1
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_b706b1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_b706b1
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_b706b1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
index 42775a4..97673b3 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, write>;
 
 fn textureStore_b706b1() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl
index ece1d5f..50126ba 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16uint, write>, coords: u32, value: vec4<u32>)
 fn textureStore_b70ded() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.dxc.hlsl
index d754d63..522ce4e 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_b70ded() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.fxc.hlsl
index d754d63..522ce4e 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_b70ded() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.msl
index 3a431a5..6256f77 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_b70ded(texture1d<uint, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.spvasm
index a62ffee..5beaa6b 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_b70ded = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_b70ded
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_b70ded
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_b70ded
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_b70ded
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_b70ded
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_b70ded
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.wgsl
index 890424d..165633c 100644
--- a/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b70ded.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_b70ded() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl
index 7384312..3e35e34 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16sint, write>, coords: vec2<u32>, value: vec4<i32>)
 fn textureStore_b76ff3() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.dxc.hlsl
index 8314e19..520d0cf 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_b76ff3() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.fxc.hlsl
index 8314e19..520d0cf 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_b76ff3() {
-  uint2 arg_1 = (0u).xx;
-  int4 arg_2 = (0).xxxx;
+  uint2 arg_1 = (1u).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.glsl
index 70f8711..2357f24 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_b76ff3() {
-  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/b76ff3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.msl
index 27f65cd..c60afc3 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_b76ff3(texture2d<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  int4 arg_2 = int4(0);
+  uint2 arg_1 = uint2(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.spvasm
index 0c8dff4..600e596 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_b76ff3 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v2uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v2uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_b76ff3
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_b76ff3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_b76ff3
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_b76ff3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_b76ff3
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_b76ff3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.wgsl
index 31d8eb6..590b81a 100644
--- a/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b76ff3.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, write>;
 
 fn textureStore_b76ff3() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl
index 521cf71..35f54ba 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32uint, write>, coords: u32, value: vec4<u32>)
 fn textureStore_b77161() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.dxc.hlsl
index fbf5804..db1ca7e 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_b77161() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.fxc.hlsl
index fbf5804..db1ca7e 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_b77161() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.msl
index dbc84ef..2b93c27 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_b77161(texture1d<uint, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.spvasm
index 877baaa..743b5c7 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,42 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_b77161 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_b77161
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_b77161
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_b77161
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_b77161
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_b77161
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_b77161
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.wgsl
index 77b02dc..1d7c24f 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_b77161() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
index a15240c..90ca4db 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba8sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_bbcb7f() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.dxc.hlsl
index 366a2e7..edf7f91 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_bbcb7f() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.fxc.hlsl
index 366a2e7..edf7f91 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 
 void textureStore_bbcb7f() {
-  int2 arg_1 = (0).xx;
-  int4 arg_2 = (0).xxxx;
+  int2 arg_1 = (1).xx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.glsl
index 2b486d8..73c6c3c 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bbcb7f() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bbcb7f() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bbcb7f() {
-  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/bbcb7f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.msl
index 0a94285..16f0357 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_bbcb7f(texture2d<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  int4 arg_2 = int4(0);
+  int2 arg_1 = int2(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.spvasm
index 59e7b74..f3aaa71 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_bbcb7f = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_bbcb7f
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_bbcb7f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_bbcb7f
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_bbcb7f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_bbcb7f
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_bbcb7f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
index 1bf17d9..1fa51e6 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, write>;
 
 fn textureStore_bbcb7f() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
index 340cf9e..abb928b 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_be6e30() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.dxc.hlsl
index 67ff8b2..743fdfd 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_be6e30() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.fxc.hlsl
index 67ff8b2..743fdfd 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 
 void textureStore_be6e30() {
-  int2 arg_1 = (0).xx;
-  float4 arg_2 = (0.0f).xxxx;
+  int2 arg_1 = (1).xx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.glsl
index 95fa82c..17fe18e 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_be6e30() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_be6e30() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_be6e30() {
-  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/be6e30.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.msl
index ad189e0..87c31cb 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_be6e30(texture2d<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
-  float4 arg_2 = float4(0.0f);
+  int2 arg_1 = int2(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.spvasm
index 57d0a8c..e9e6149 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v2int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_be6e30 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v2int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v2int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_be6e30
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_be6e30
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_be6e30
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_be6e30
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_be6e30
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_be6e30
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
index 3fa9fde..523c97d 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, write>;
 
 fn textureStore_be6e30() {
-  var arg_1 = vec2<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec2<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
index d6c70e7..dcea5ed 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_bf775c() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.dxc.hlsl
index c75cb0b..f4a3b24 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_bf775c() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.fxc.hlsl
index c75cb0b..f4a3b24 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_bf775c() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.msl
index 24079fd..b918a1f 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_bf775c(texture1d<int, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.spvasm
index c699fc0..d9b4438 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_bf775c = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
                OpStore %arg_1 %int_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_bf775c
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_bf775c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_bf775c
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_bf775c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_bf775c
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_bf775c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
index fd24109..d9e173e 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_bf775c() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl
index f2dbc70..b36ad4c 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32float, write>, coords: u32, value: vec4<f32>)
 fn textureStore_c1f29e() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.dxc.hlsl
index 36eb25d..aa5385d 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_c1f29e() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.fxc.hlsl
index 36eb25d..aa5385d 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_c1f29e() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.msl
index b3fdc8a..b90cc9c 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_c1f29e(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.spvasm
index 183f38c..937da13 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_c1f29e = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_c1f29e
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_c1f29e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_c1f29e
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_c1f29e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_c1f29e
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_c1f29e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.wgsl
index 9d3ff1a..b302fbe 100644
--- a/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c1f29e.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_c1f29e() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl
index 91424c5..4a31b49 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16sint, write>, coords: vec2<u32>, array_index: u32, value: vec4<i32>)
 fn textureStore_c2ca46() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.dxc.hlsl
index ab57f4a..de55098 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_c2ca46() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.fxc.hlsl
index ab57f4a..de55098 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_c2ca46() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   uint arg_2 = 1u;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.glsl
index 5f6b0be..2786286 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c2ca46() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c2ca46() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c2ca46() {
-  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/c2ca46.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.msl
index ea9becc..711aa8e 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_c2ca46(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   uint arg_2 = 1u;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.spvasm
index 5992bcf1..9824af59 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,54 +42,57 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
-%_ptr_Function_v2uint = OpTypePointer Function %v2uint
      %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
+%_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %26 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_c2ca46 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %36 = OpLoad %uint %arg_2
-         %37 = OpCompositeConstruct %v3uint %34 %35 %36
-         %38 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %39 = OpLoad %uint %arg_2
+         %40 = OpCompositeConstruct %v3uint %37 %38 %39
+         %41 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_c2ca46
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_c2ca46
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_c2ca46
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_c2ca46
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_c2ca46
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_c2ca46
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.wgsl
index 1028c67..621ebe8 100644
--- a/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c2ca46.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureStore_c2ca46() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1u;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl
index 759c4b3..fd11547 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8sint, write>, coords: vec2<u32>, array_index: i32, value: vec4<i32>)
 fn textureStore_c32905() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.dxc.hlsl
index 4d99be6..060ff84 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_c32905() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.fxc.hlsl
index 4d99be6..060ff84 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_c32905() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.glsl
index 4a695bb..b7b208a 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c32905() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c32905() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_c32905() {
-  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/c32905.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.msl
index 52e8a02..59fd22c 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_c32905(texture2d_array<int, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.spvasm
index 48e2220..6b25e8c 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %19 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %23 = OpConstantNull %v2uint
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %27 = OpConstantNull %v4int
+         %29 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %32 = OpConstantNull %v4int
      %v3uint = OpTypeVector %uint 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_c32905 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2uint %arg_1
-         %34 = OpCompositeExtract %uint %33 0
-         %35 = OpCompositeExtract %uint %33 1
-         %37 = OpLoad %int %arg_2
-         %36 = OpBitcast %uint %37
-         %38 = OpCompositeConstruct %v3uint %34 %35 %36
-         %39 = OpLoad %v4int %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2uint %arg_1
+         %37 = OpCompositeExtract %uint %36 0
+         %38 = OpCompositeExtract %uint %36 1
+         %40 = OpLoad %int %arg_2
+         %39 = OpBitcast %uint %40
+         %41 = OpCompositeConstruct %v3uint %37 %38 %39
+         %42 = OpLoad %v4int %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_c32905
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_c32905
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_c32905
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_c32905
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_c32905
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_c32905
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.wgsl
index 73f1d99..d8002b4 100644
--- a/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c32905.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureStore_c32905() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
index 3f51529..4f58ba3 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba16float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_c5af1e() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.dxc.hlsl
index c52db8f..f92b8f6 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_c5af1e() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.fxc.hlsl
index c52db8f..f92b8f6 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_c5af1e() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.glsl
index d75b39b..cd1558a 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_c5af1e() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_c5af1e() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_c5af1e() {
-  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/c5af1e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.msl
index 6e9206f..1abb310 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_c5af1e(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.spvasm
index 0a7e655..cbb579c 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_c5af1e = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_c5af1e
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_c5af1e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_c5af1e
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_c5af1e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_c5af1e
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_c5af1e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
index cc2c9d1..71ea840 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, write>;
 
 fn textureStore_c5af1e() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl
index ce4bcc6..e42fa06 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_c863be() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.dxc.hlsl
index bf1dd2c..d755997 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_c863be() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.fxc.hlsl
index bf1dd2c..d755997 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_c863be() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.msl
index 3b4ee66..3b0b452 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_c863be(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.spvasm
index 49ae3b6..5787add 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 50
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,52 +42,54 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %27 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %36 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %39 = OpTypeFunction %v4float
 %textureStore_c863be = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %28 = OpLoad %11 %arg_0
-         %30 = OpLoad %v2int %arg_1
-         %31 = OpCompositeExtract %int %30 0
-         %32 = OpCompositeExtract %int %30 1
-         %33 = OpLoad %int %arg_2
-         %34 = OpCompositeConstruct %v3int %31 %32 %33
-         %35 = OpLoad %v4float %arg_3
-               OpImageWrite %28 %34 %35
+               OpStore %arg_3 %27
+         %31 = OpLoad %11 %arg_0
+         %33 = OpLoad %v2int %arg_1
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %int %33 1
+         %36 = OpLoad %int %arg_2
+         %37 = OpCompositeConstruct %v3int %34 %35 %36
+         %38 = OpLoad %v4float %arg_3
+               OpImageWrite %31 %37 %38
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %36
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_c863be
+%vertex_main_inner = OpFunction %v4float None %39
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_c863be
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %41 = OpLabel
-         %42 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %45
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %45 = OpLabel
-         %46 = OpFunctionCall %void %textureStore_c863be
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureStore_c863be
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_c863be
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_c863be
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
index ca615c5..22fc708 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureStore_c863be() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl
index 92e3678..d8b0fc5 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8sint, write>, coords: vec3<u32>, value: vec4<i32>)
 fn textureStore_cb3b0b() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.dxc.hlsl
index 6f20c68..158f60c 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_cb3b0b() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.fxc.hlsl
index 6f20c68..158f60c 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_cb3b0b() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.glsl
index 96f8c65..9b2d5e6 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_cb3b0b() {
-  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/cb3b0b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.msl
index 4b6e161..c3fa3cea 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_cb3b0b(texture3d<int, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  int4 arg_2 = int4(0);
+  uint3 arg_1 = uint3(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.spvasm
index 363baf6..0c3ca78 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %19 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_cb3b0b = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_cb3b0b
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_cb3b0b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_cb3b0b
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_cb3b0b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_cb3b0b
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_cb3b0b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.wgsl
index 846d119..f7148a3 100644
--- a/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/cb3b0b.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, write>;
 
 fn textureStore_cb3b0b() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl
index 5b2e2f3..c369da8 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32uint, write>, coords: u32, value: vec4<u32>)
 fn textureStore_d26166() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.dxc.hlsl
index 8ec5059..35e987a 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_d26166() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.fxc.hlsl
index 8ec5059..35e987a 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_d26166() {
   uint arg_1 = 1u;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.msl
index 22472ce..121c532 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_d26166(texture1d<uint, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.spvasm
index 922800c..ee06594 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -44,41 +44,42 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %22 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4uint
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_d26166 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %25
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %uint %arg_1
+         %29 = OpLoad %v4uint %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_d26166
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_d26166
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_d26166
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_d26166
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_d26166
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_d26166
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.wgsl
index 9d51a44..ce91750 100644
--- a/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d26166.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_d26166() {
   var arg_1 = 1u;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl
index 82ce654..561690e 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32float, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_d55e65() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.dxc.hlsl
index 7933088..3804b29 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_d55e65() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.fxc.hlsl
index 7933088..3804b29 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_d55e65() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.glsl
index 87199ca..9b95ec7 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_d55e65() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_d55e65() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_d55e65() {
-  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/d55e65.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.msl
index 11b7b3b..4150e81 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_d55e65(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.spvasm
index e36f65d..a2014a6 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_d55e65 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_d55e65
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_d55e65
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_d55e65
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_d55e65
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_d55e65
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_d55e65
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.wgsl
index 939d999..a3cea00 100644
--- a/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d55e65.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureStore_d55e65() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
index 5f1aa47..c6dc778 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rg32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_d73b5c() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.dxc.hlsl
index e4f893a..f0a3ecc 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_d73b5c() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.fxc.hlsl
index e4f893a..f0a3ecc 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_d73b5c() {
   int arg_1 = 1;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.msl
index 0fe1471..8346f03 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_d73b5c(texture1d<int, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.spvasm
index b558399..5b3270b 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,42 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4int
+         %30 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_d73b5c = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %25
                OpStore %arg_1 %int_1
                OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+         %27 = OpLoad %11 %arg_0
+         %28 = OpLoad %int %arg_1
+         %29 = OpLoad %v4int %arg_2
+               OpImageWrite %27 %28 %29
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_d73b5c
+%vertex_main_inner = OpFunction %v4float None %30
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %textureStore_d73b5c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %35 = OpLabel
+         %36 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %36
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_d73b5c
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_d73b5c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_d73b5c
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_d73b5c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
index b5c5458..9509d8c 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_d73b5c() {
   var arg_1 = 1i;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl
index 14bffb5..6841e09 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rg32sint, write>, coords: vec3<u32>, value: vec4<i32>)
 fn textureStore_d82b0a() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.dxc.hlsl
index f01ea8b..ea9cc97 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_d82b0a() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.fxc.hlsl
index f01ea8b..ea9cc97 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_d82b0a() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.msl
index edc5f9a..e81fb99 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_d82b0a(texture3d<int, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  int4 arg_2 = int4(0);
+  uint3 arg_1 = uint3(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.spvasm
index 9e0a95c..f4e3cee 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,44 +42,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %19 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_d82b0a = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_d82b0a
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_d82b0a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_d82b0a
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_d82b0a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_d82b0a
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_d82b0a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.wgsl
index db0d94f..8d992f8 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, write>;
 
 fn textureStore_d82b0a() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl
index 38c407e..a5df6eb 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<rgba16uint, write>, coords: vec2<u32>, value: vec4<u32>)
 fn textureStore_db92a2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.dxc.hlsl
index 554bd67..992e579 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_db92a2() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.fxc.hlsl
index 554bd67..992e579 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_db92a2() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.glsl
index 26e0bf5..c4cb3ba 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_db92a2() {
-  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/db92a2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.msl
index 71a107a..789c06b 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_db92a2(texture2d<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  uint4 arg_2 = uint4(0u);
+  uint2 arg_1 = uint2(1u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.spvasm
index 7a570ae..400c092 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_db92a2 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_db92a2
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_db92a2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_db92a2
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_db92a2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_db92a2
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_db92a2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.wgsl
index 8754246..e6af452 100644
--- a/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/db92a2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, write>;
 
 fn textureStore_db92a2() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
index a026e43..79fbb32 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8snorm, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_dd7d81() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.dxc.hlsl
index 303f614..c632f94 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_dd7d81() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.fxc.hlsl
index 303f614..c632f94 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_dd7d81() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.glsl
index 2a86984..60fac80 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_dd7d81() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_dd7d81() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_dd7d81() {
-  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/dd7d81.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.msl
index e87f2ed..30a6239 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_dd7d81(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.spvasm
index 8e21c4c..ff057ab 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_dd7d81 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_dd7d81
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_dd7d81
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_dd7d81
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_dd7d81
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_dd7d81
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_dd7d81
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
index 812587c..dfe4f3c 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, write>;
 
 fn textureStore_dd7d81() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl
index 29a96ad..5796c71 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_dde364() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.dxc.hlsl
index 8bda58b..c51681f 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_dde364() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.fxc.hlsl
index 8bda58b..c51681f 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_dde364() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.msl
index 8ac8d03..6073ae5 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_dde364(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.spvasm
index 39505fa..84e5b5f 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 53
+; Bound: 56
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -43,54 +43,57 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %26 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %39 = OpTypeFunction %v4float
+         %42 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_dde364 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_int Function %26
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %36 = OpLoad %int %arg_2
-         %37 = OpCompositeConstruct %v3int %34 %35 %36
-         %38 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %37 %38
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %39 = OpLoad %int %arg_2
+         %40 = OpCompositeConstruct %v3int %37 %38 %39
+         %41 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %39
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_dde364
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_dde364
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %44 = OpLabel
-         %45 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %45
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %48 = OpLabel
-         %49 = OpFunctionCall %void %textureStore_dde364
+         %51 = OpLabel
+         %52 = OpFunctionCall %void %textureStore_dde364
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %51 = OpLabel
-         %52 = OpFunctionCall %void %textureStore_dde364
+         %54 = OpLabel
+         %55 = OpFunctionCall %void %textureStore_dde364
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
index f9ea808..7ac5a16 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureStore_dde364() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl
index 74eb6ce..3bd65d2 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<r32sint, write>, coords: u32, value: vec4<i32>)
 fn textureStore_de4b94() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.dxc.hlsl
index 298f0d2..66c4a17 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_de4b94() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.fxc.hlsl
index 298f0d2..66c4a17 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_de4b94() {
   uint arg_1 = 1u;
-  int4 arg_2 = (0).xxxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.msl
index 92bf211..f02fdc7 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_de4b94(texture1d<int, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  int4 arg_2 = int4(0);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.spvasm
index 4d60d83..e306fb9 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_uint = OpTypePointer Function %uint
          %21 = OpConstantNull %uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_de4b94 = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %uint %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_de4b94
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_de4b94
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_de4b94
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_de4b94
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_de4b94
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_de4b94
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.wgsl
index 112c6b8..98cdbb0 100644
--- a/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/de4b94.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_de4b94() {
   var arg_1 = 1u;
-  var arg_2 = vec4<i32>();
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl
index 7d52fc2..b03549c 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<r32float, write>, coords: vec2<i32>, array_index: u32, value: vec4<f32>)
 fn textureStore_df2ca4() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.dxc.hlsl
index 46b5844..1dfaf0f 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_df2ca4() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.fxc.hlsl
index 46b5844..1dfaf0f 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_df2ca4() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.glsl
index e7547d3..047cb16 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_df2ca4() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_df2ca4() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_df2ca4() {
-  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/df2ca4.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.msl
index d3eea8d..633b3cf 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_df2ca4(texture2d_array<float, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.spvasm
index 90f4c06..aa53658 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,57 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
        %uint = OpTypeInt 32 0
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_df2ca4 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2int %arg_1
-         %32 = OpCompositeExtract %int %31 0
-         %33 = OpCompositeExtract %int %31 1
-         %35 = OpLoad %uint %arg_2
-         %34 = OpBitcast %int %35
-         %36 = OpCompositeConstruct %v3int %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2int %arg_1
+         %36 = OpCompositeExtract %int %35 0
+         %37 = OpCompositeExtract %int %35 1
+         %39 = OpLoad %uint %arg_2
+         %38 = OpBitcast %int %39
+         %40 = OpCompositeConstruct %v3int %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_df2ca4
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_df2ca4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_df2ca4
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_df2ca4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_df2ca4
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_df2ca4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.wgsl
index 60250cc..4775cc0 100644
--- a/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/df2ca4.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureStore_df2ca4() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl
index f8595d4..8371fa3 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32float, write>, coords: vec2<u32>, array_index: i32, value: vec4<f32>)
 fn textureStore_dfa9a1() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.dxc.hlsl
index 0342085..fef042f 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_dfa9a1() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.fxc.hlsl
index 0342085..fef042f 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
 void textureStore_dfa9a1() {
-  uint2 arg_1 = (0u).xx;
+  uint2 arg_1 = (1u).xx;
   int arg_2 = 1;
-  float4 arg_3 = (0.0f).xxxx;
+  float4 arg_3 = (1.0f).xxxx;
   arg_0[uint3(arg_1, uint(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.msl
index 48961ca..3ed3139 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_dfa9a1(texture2d_array<float, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
+  uint2 arg_1 = uint2(1u);
   int arg_2 = 1;
-  float4 arg_3 = float4(0.0f);
+  float4 arg_3 = float4(1.0f);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.spvasm
index 1bf8a16..16fa8ef 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 55
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,54 +42,57 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+         %27 = OpConstantNull %int
+    %float_1 = OpConstant %float 1
+         %29 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
      %v3uint = OpTypeVector %uint 3
-         %38 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %42 = OpTypeFunction %v4float
 %textureStore_dfa9a1 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %27
       %arg_3 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %5
-         %29 = OpLoad %11 %arg_0
-         %31 = OpLoad %v2uint %arg_1
-         %32 = OpCompositeExtract %uint %31 0
-         %33 = OpCompositeExtract %uint %31 1
-         %35 = OpLoad %int %arg_2
-         %34 = OpBitcast %uint %35
-         %36 = OpCompositeConstruct %v3uint %32 %33 %34
-         %37 = OpLoad %v4float %arg_3
-               OpImageWrite %29 %36 %37
+               OpStore %arg_3 %29
+         %33 = OpLoad %11 %arg_0
+         %35 = OpLoad %v2uint %arg_1
+         %36 = OpCompositeExtract %uint %35 0
+         %37 = OpCompositeExtract %uint %35 1
+         %39 = OpLoad %int %arg_2
+         %38 = OpBitcast %uint %39
+         %40 = OpCompositeConstruct %v3uint %36 %37 %38
+         %41 = OpLoad %v4float %arg_3
+               OpImageWrite %33 %40 %41
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_dfa9a1
+%vertex_main_inner = OpFunction %v4float None %42
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_dfa9a1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %47 = OpLabel
+         %48 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %48
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_dfa9a1
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureStore_dfa9a1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_dfa9a1
+         %53 = OpLabel
+         %54 = OpFunctionCall %void %textureStore_dfa9a1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.wgsl
index f811438..b09f84a 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureStore_dfa9a1() {
-  var arg_1 = vec2<u32>();
+  var arg_1 = vec2<u32>(1u);
   var arg_2 = 1i;
-  var arg_3 = vec4<f32>();
+  var arg_3 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl
index 760a063..175a7f5 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32uint, write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
 fn textureStore_dffb13() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.dxc.hlsl
index 532d05c..ff6b8f4 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_dffb13() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.fxc.hlsl
index 532d05c..ff6b8f4 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_dffb13() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.msl
index 7218365..6d26bd7 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_dffb13(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.spvasm
index 35fc43a..39fdc16 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -43,55 +43,58 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_dffb13 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_dffb13
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_dffb13
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_dffb13
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_dffb13
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_dffb13
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_dffb13
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.wgsl
index e3ba416..be48ae6 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureStore_dffb13() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl
index c05dac5..c8fbc82 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba8unorm, write>, coords: u32, value: vec4<f32>)
 fn textureStore_e7c6d8() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.dxc.hlsl
index af74e51..c41266d 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_e7c6d8() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.fxc.hlsl
index af74e51..c41266d 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_e7c6d8() {
   uint arg_1 = 1u;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.msl
index 9b202d0..5d63f1b 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_e7c6d8(texture1d<float, access::write> tint_symbol_1) {
   uint arg_1 = 1u;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.spvasm
index e7268c9..9e5c49a 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
          %20 = OpConstantNull %uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_e7c6d8 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %uint_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %uint %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_e7c6d8
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_e7c6d8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_e7c6d8
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_e7c6d8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_e7c6d8
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_e7c6d8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.wgsl
index 7815feb..3998c63 100644
--- a/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e7c6d8.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_e7c6d8() {
   var arg_1 = 1u;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
index bc4a830..34b40f5 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba16float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_e885e8() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.dxc.hlsl
index 3a6acf9..0cb3ecc 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_e885e8() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.fxc.hlsl
index 3a6acf9..0cb3ecc 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_e885e8() {
   int arg_1 = 1;
-  float4 arg_2 = (0.0f).xxxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.msl
index 67de77c..cdb58ca 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_e885e8(texture1d<float, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  float4 arg_2 = float4(0.0f);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.spvasm
index de6672d..948a8a3 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -43,40 +43,41 @@
       %int_1 = OpConstant %int 1
 %_ptr_Function_int = OpTypePointer Function %int
          %20 = OpConstantNull %int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %textureStore_e885e8 = OpFunction %void None %12
          %15 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %20
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_2 %22
+         %26 = OpLoad %11 %arg_0
+         %27 = OpLoad %int %arg_1
+         %28 = OpLoad %v4float %arg_2
+               OpImageWrite %26 %27 %28
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_e885e8
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %textureStore_e885e8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_e885e8
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %textureStore_e885e8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_e885e8
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %textureStore_e885e8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
index 32e9ffd..3fcda8b 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_e885e8() {
   var arg_1 = 1i;
-  var arg_2 = vec4<f32>();
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl
index dfffdaa..cf4ab0c 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_2d<r32uint, write>, coords: vec2<u32>, value: vec4<u32>)
 fn textureStore_e8cbf7() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.dxc.hlsl
index 645dff7..165e0bc 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_e8cbf7() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.fxc.hlsl
index 645dff7..165e0bc 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_e8cbf7() {
-  uint2 arg_1 = (0u).xx;
-  uint4 arg_2 = (0u).xxxx;
+  uint2 arg_1 = (1u).xx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.glsl
index 5852ebd..4049bc9 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_e8cbf7() {
-  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/e8cbf7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.msl
index 92344cd..4412956 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_e8cbf7(texture2d<uint, access::write> tint_symbol_1) {
-  uint2 arg_1 = uint2(0u);
-  uint4 arg_2 = uint4(0u);
+  uint2 arg_1 = uint2(1u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint2(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.spvasm
index 83db776..4ba7a7b 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
      %v2uint = OpTypeVector %uint 2
-         %18 = OpConstantNull %v2uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v2uint %uint_1 %uint_1
 %_ptr_Function_v2uint = OpTypePointer Function %v2uint
+         %22 = OpConstantNull %v2uint
      %v4uint = OpTypeVector %uint 4
-         %22 = OpConstantNull %v4uint
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_e8cbf7 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2uint Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v2uint %arg_1
-         %28 = OpLoad %v4uint %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v2uint Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v2uint %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_e8cbf7
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_e8cbf7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_e8cbf7
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_e8cbf7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_e8cbf7
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_e8cbf7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.wgsl
index f43ca9b..0402200 100644
--- a/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e8cbf7.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, write>;
 
 fn textureStore_e8cbf7() {
-  var arg_1 = vec2<u32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec2<u32>(1u);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
index 098cfad..36372e1 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<r32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_eb702f() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.dxc.hlsl
index 55d4e79..ddfc382 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_eb702f() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.fxc.hlsl
index 55d4e79..ddfc382 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_eb702f() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.glsl
index 5dfa23d..89e2a01 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_eb702f() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_eb702f() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_eb702f() {
-  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/eb702f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.msl
index 9926e89..550c53e 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_eb702f(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.spvasm
index 8d9bddb..f64b950 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,42 +40,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_eb702f = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_eb702f
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_eb702f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_eb702f
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_eb702f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_eb702f
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_eb702f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
index bc8a259..9b56f0d 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, write>;
 
 fn textureStore_eb702f() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
index 0ec2c27..bf2ec48 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<r32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_eb78b9() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.dxc.hlsl
index c798708..626d4a8 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_eb78b9() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.fxc.hlsl
index c798708..626d4a8 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_eb78b9() {
-  int3 arg_1 = (0).xxx;
-  int4 arg_2 = (0).xxxx;
+  int3 arg_1 = (1).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.glsl
index 7a6aa12..ba4886c 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_eb78b9() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_eb78b9() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_eb78b9() {
-  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/eb78b9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.msl
index e5b872f..135de26 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_eb78b9(texture3d<int, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  int4 arg_2 = int4(0);
+  int3 arg_1 = int3(1);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.spvasm
index ca55182..b48dd46 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -40,44 +40,47 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %22 = OpConstantNull %v3int
       %v4int = OpTypeVector %int 4
-         %22 = OpConstantNull %v4int
+         %24 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_eb78b9 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %22
-               OpStore %arg_1 %18
-               OpStore %arg_2 %22
-         %26 = OpLoad %11 %arg_0
-         %27 = OpLoad %v3int %arg_1
-         %28 = OpLoad %v4int %arg_2
-               OpImageWrite %26 %27 %28
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %27
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %v3int %arg_1
+         %31 = OpLoad %v4int %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %textureStore_eb78b9
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_eb78b9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureStore_eb78b9
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_eb78b9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %textureStore_eb78b9
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_eb78b9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
index 2d7e635..cbee439 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, write>;
 
 fn textureStore_eb78b9() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
index 19d501f..6b99bfa 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rg32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_ee6acc() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.dxc.hlsl
index a6ce8c7..bfaac79 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_ee6acc() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.fxc.hlsl
index a6ce8c7..bfaac79 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_ee6acc() {
-  int3 arg_1 = (0).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  int3 arg_1 = (1).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.msl
index 9b5c922..ad212b6 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_ee6acc(texture3d<float, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  float4 arg_2 = float4(0.0f);
+  int3 arg_1 = int3(1);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.spvasm
index bc3df6d..a004106 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,42 +41,45 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %18 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3int
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_ee6acc = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3int %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3int %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_ee6acc
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_ee6acc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_ee6acc
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_ee6acc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_ee6acc
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_ee6acc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
index 8ba6d40..c55bbcd 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, write>;
 
 fn textureStore_ee6acc() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
index fa28513..9154768 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<r32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_ef9f2f() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.dxc.hlsl
index ded9f95..be459f0 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_ef9f2f() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.fxc.hlsl
index ded9f95..be459f0 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_ef9f2f() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.glsl
index 040973d..03179e4 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ef9f2f() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ef9f2f() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ef9f2f() {
-  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/ef9f2f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.msl
index 9c6a6bd..f7972bd 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_ef9f2f(texture3d<uint, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  uint4 arg_2 = uint4(0u);
+  int3 arg_1 = int3(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.spvasm
index 4148955..f841295 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %19 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_ef9f2f = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_ef9f2f
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_ef9f2f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_ef9f2f
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_ef9f2f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_ef9f2f
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_ef9f2f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
index 1045a89..dd6845f 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, write>;
 
 fn textureStore_ef9f2f() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl
index 1014342..f2caa3c 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<r32sint, write>, coords: vec3<u32>, value: vec4<i32>)
 fn textureStore_f1e6d3() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.dxc.hlsl
index 56d522a..0563325 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_f1e6d3() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.fxc.hlsl
index 56d522a..0563325 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 
 void textureStore_f1e6d3() {
-  uint3 arg_1 = (0u).xxx;
-  int4 arg_2 = (0).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  int4 arg_2 = (1).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.glsl
index a4e196b..1276474 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_f1e6d3() {
-  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/f1e6d3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.msl
index c32f6a9..38b3da4 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_f1e6d3(texture3d<int, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  int4 arg_2 = int4(0);
+  uint3 arg_1 = uint3(1u);
+  int4 arg_2 = int4(1);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.spvasm
index baf5519..8e17d81 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %19 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %20 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
+         %23 = OpConstantNull %v3uint
       %v4int = OpTypeVector %int 4
-         %23 = OpConstantNull %v4int
+      %int_1 = OpConstant %int 1
+         %26 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4int
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_f1e6d3 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4int Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3uint %arg_1
-         %29 = OpLoad %v4int %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4int Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3uint %arg_1
+         %33 = OpLoad %v4int %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_f1e6d3
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_f1e6d3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_f1e6d3
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_f1e6d3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_f1e6d3
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_f1e6d3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.wgsl
index 3fe60f3..2f64952 100644
--- a/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f1e6d3.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, write>;
 
 fn textureStore_f1e6d3() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<i32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
index b58c3ff..8068cf5 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rgba8uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_f8dead() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.dxc.hlsl
index 94111fb..5ada5ff 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_f8dead() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.fxc.hlsl
index 94111fb..5ada5ff 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 
 void textureStore_f8dead() {
-  int3 arg_1 = (0).xxx;
-  uint4 arg_2 = (0u).xxxx;
+  int3 arg_1 = (1).xxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.glsl
index 3583671..c0607a9 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.glsl
@@ -2,8 +2,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_f8dead() {
-  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);
 }
 
@@ -25,8 +25,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_f8dead() {
-  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);
 }
 
@@ -42,8 +42,8 @@
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_f8dead() {
-  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/f8dead.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.msl
index 4e6da98..735272b 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_f8dead(texture3d<uint, access::write> tint_symbol_1) {
-  int3 arg_1 = int3(0);
-  uint4 arg_2 = uint4(0u);
+  int3 arg_1 = int3(1);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.spvasm
index 2a9e3e8..a125397 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,44 +41,48 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-         %19 = OpConstantNull %v3int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3int = OpTypePointer Function %v3int
+         %23 = OpConstantNull %v3int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %26 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %29 = OpConstantNull %v4uint
+         %34 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_f8dead = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3int Function %19
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
-               OpStore %arg_1 %19
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %v3int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+      %arg_1 = OpVariable %_ptr_Function_v3int Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %29
+               OpStore %arg_1 %20
+               OpStore %arg_2 %26
+         %31 = OpLoad %11 %arg_0
+         %32 = OpLoad %v3int %arg_1
+         %33 = OpLoad %v4uint %arg_2
+               OpImageWrite %31 %32 %33
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_f8dead
+%vertex_main_inner = OpFunction %v4float None %34
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureStore_f8dead
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %39 = OpLabel
+         %40 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %40
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_f8dead
+         %43 = OpLabel
+         %44 = OpFunctionCall %void %textureStore_f8dead
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_f8dead
+         %46 = OpLabel
+         %47 = OpFunctionCall %void %textureStore_f8dead
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
index 52a1d3e..b510b95 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, write>;
 
 fn textureStore_f8dead() {
-  var arg_1 = vec3<i32>();
-  var arg_2 = vec4<u32>();
+  var arg_1 = vec3<i32>(1i);
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
index d1d2815..101ef88 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rg32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_f9be83() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.dxc.hlsl
index 129bfb8..4b36d74 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_f9be83() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.fxc.hlsl
index 129bfb8..4b36d74 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_f9be83() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.msl
index 0217d28..07cbf5c 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_f9be83(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.spvasm
index c7ee036..4f8bbfb 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -42,54 +42,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %26 = OpConstantNull %v4int
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_f9be83 = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2int %arg_1
-         %33 = OpCompositeExtract %int %32 0
-         %34 = OpCompositeExtract %int %32 1
-         %35 = OpLoad %int %arg_2
-         %36 = OpCompositeConstruct %v3int %33 %34 %35
-         %37 = OpLoad %v4int %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_f9be83
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_f9be83
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_f9be83
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_f9be83
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_f9be83
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_f9be83
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
index 3e9226e..d7ad8ba 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureStore_f9be83() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
index 7b6b6af..2b020b6 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
@@ -25,7 +25,7 @@
 // fn textureStore(texture: texture_storage_1d<rgba32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_fb9a8f() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.dxc.hlsl
index 7e5b23d..2809d9d 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.dxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_fb9a8f() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.fxc.hlsl
index 7e5b23d..2809d9d 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.fxc.hlsl
@@ -2,7 +2,7 @@
 
 void textureStore_fb9a8f() {
   int arg_1 = 1;
-  uint4 arg_2 = (0u).xxxx;
+  uint4 arg_2 = (1u).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.msl
index a808ba3..9e3b7d1 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void textureStore_fb9a8f(texture1d<uint, access::write> tint_symbol_1) {
   int arg_1 = 1;
-  uint4 arg_2 = uint4(0u);
+  uint4 arg_2 = uint4(1u);
   tint_symbol_1.write(arg_2, uint(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.spvasm
index 708e239..9b76cd8 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability Image1D
@@ -45,41 +45,43 @@
 %_ptr_Function_int = OpTypePointer Function %int
          %21 = OpConstantNull %int
      %v4uint = OpTypeVector %uint 4
-         %23 = OpConstantNull %v4uint
+     %uint_1 = OpConstant %uint 1
+         %24 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %30 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4uint
+         %32 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_fb9a8f = OpFunction %void None %13
          %16 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %21
-      %arg_2 = OpVariable %_ptr_Function_v4uint Function %23
+      %arg_2 = OpVariable %_ptr_Function_v4uint Function %27
                OpStore %arg_1 %int_1
-               OpStore %arg_2 %23
-         %27 = OpLoad %11 %arg_0
-         %28 = OpLoad %int %arg_1
-         %29 = OpLoad %v4uint %arg_2
-               OpImageWrite %27 %28 %29
+               OpStore %arg_2 %24
+         %29 = OpLoad %11 %arg_0
+         %30 = OpLoad %int %arg_1
+         %31 = OpLoad %v4uint %arg_2
+               OpImageWrite %29 %30 %31
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %30
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureStore_fb9a8f
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %textureStore_fb9a8f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %36
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_fb9a8f
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %textureStore_fb9a8f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_fb9a8f
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureStore_fb9a8f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
index aaeb8f9..35389e1 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 fn textureStore_fb9a8f() {
   var arg_1 = 1i;
-  var arg_2 = vec4<u32>();
+  var arg_2 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
index b3a551b..6ef2bed 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_fbf53f() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.dxc.hlsl
index 46a154d..b90466e 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_fbf53f() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.fxc.hlsl
index 46a154d..b90466e 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
 void textureStore_fbf53f() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   int arg_2 = 1;
-  int4 arg_3 = (0).xxxx;
+  int4 arg_3 = (1).xxxx;
   arg_0[int3(arg_1, arg_2)] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.glsl
index c36d495..7e5516f 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_fbf53f() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_fbf53f() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_fbf53f() {
-  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/fbf53f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.msl
index 7d00e81..9a5b5d0 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_fbf53f(texture2d_array<int, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   int arg_2 = 1;
-  int4 arg_3 = int4(0);
+  int4 arg_3 = int4(1);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.spvasm
index 037b3ee..a1a0556 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 52
+; Bound: 54
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -41,54 +41,56 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-         %18 = OpConstantNull %v2int
-%_ptr_Function_v2int = OpTypePointer Function %v2int
       %int_1 = OpConstant %int 1
+         %19 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %22 = OpConstantNull %v2int
 %_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+         %25 = OpConstantNull %int
       %v4int = OpTypeVector %int 4
-         %26 = OpConstantNull %v4int
+         %27 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4int = OpTypePointer Function %v4int
+         %30 = OpConstantNull %v4int
       %v3int = OpTypeVector %int 3
-         %38 = OpTypeFunction %v4float
+         %40 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_fbf53f = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %18
-      %arg_2 = OpVariable %_ptr_Function_int Function %24
-      %arg_3 = OpVariable %_ptr_Function_v4int Function %26
-               OpStore %arg_1 %18
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %22
+      %arg_2 = OpVariable %_ptr_Function_int Function %25
+      %arg_3 = OpVariable %_ptr_Function_v4int Function %30
+               OpStore %arg_1 %19
                OpStore %arg_2 %int_1
-               OpStore %arg_3 %26
-         %30 = OpLoad %11 %arg_0
-         %32 = OpLoad %v2int %arg_1
-         %33 = OpCompositeExtract %int %32 0
-         %34 = OpCompositeExtract %int %32 1
-         %35 = OpLoad %int %arg_2
-         %36 = OpCompositeConstruct %v3int %33 %34 %35
-         %37 = OpLoad %v4int %arg_3
-               OpImageWrite %30 %36 %37
+               OpStore %arg_3 %27
+         %32 = OpLoad %11 %arg_0
+         %34 = OpLoad %v2int %arg_1
+         %35 = OpCompositeExtract %int %34 0
+         %36 = OpCompositeExtract %int %34 1
+         %37 = OpLoad %int %arg_2
+         %38 = OpCompositeConstruct %v3int %35 %36 %37
+         %39 = OpLoad %v4int %arg_3
+               OpImageWrite %32 %38 %39
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %38
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %textureStore_fbf53f
+%vertex_main_inner = OpFunction %v4float None %40
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_fbf53f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %43 = OpLabel
-         %44 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %44
+         %45 = OpLabel
+         %46 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %46
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureStore_fbf53f
+         %49 = OpLabel
+         %50 = OpFunctionCall %void %textureStore_fbf53f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %50 = OpLabel
-         %51 = OpFunctionCall %void %textureStore_fbf53f
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_fbf53f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
index e9c201c..3b54b98 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureStore_fbf53f() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1i;
-  var arg_3 = vec4<i32>();
+  var arg_3 = vec4<i32>(1i);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl
index 808c43b..775b39a 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl
@@ -24,8 +24,8 @@
 
 // fn textureStore(texture: texture_storage_3d<rg32float, write>, coords: vec3<u32>, value: vec4<f32>)
 fn textureStore_fcbe66() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.dxc.hlsl
index 2f4a6da..ed3218d 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.dxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_fcbe66() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.fxc.hlsl
index 2f4a6da..ed3218d 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.fxc.hlsl
@@ -1,8 +1,8 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 
 void textureStore_fcbe66() {
-  uint3 arg_1 = (0u).xxx;
-  float4 arg_2 = (0.0f).xxxx;
+  uint3 arg_1 = (1u).xxx;
+  float4 arg_2 = (1.0f).xxxx;
   arg_0[arg_1] = arg_2;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.msl
index e370bf5..036ba38 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.msl
@@ -2,8 +2,8 @@
 
 using namespace metal;
 void textureStore_fcbe66(texture3d<float, access::write> tint_symbol_1) {
-  uint3 arg_1 = uint3(0u);
-  float4 arg_2 = float4(0.0f);
+  uint3 arg_1 = uint3(1u);
+  float4 arg_2 = float4(1.0f);
   tint_symbol_1.write(arg_2, uint3(arg_1));
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.spvasm
index e40ac5d..250f4de 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability StorageImageExtendedFormats
@@ -41,42 +41,45 @@
          %12 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
      %v3uint = OpTypeVector %uint 3
-         %18 = OpConstantNull %v3uint
+     %uint_1 = OpConstant %uint 1
+         %19 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
 %_ptr_Function_v3uint = OpTypePointer Function %v3uint
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %27 = OpTypeFunction %v4float
+         %22 = OpConstantNull %v3uint
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %31 = OpTypeFunction %v4float
 %textureStore_fcbe66 = OpFunction %void None %12
          %15 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v3uint Function %18
+      %arg_1 = OpVariable %_ptr_Function_v3uint Function %22
       %arg_2 = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %arg_1 %18
-               OpStore %arg_2 %5
-         %24 = OpLoad %11 %arg_0
-         %25 = OpLoad %v3uint %arg_1
-         %26 = OpLoad %v4float %arg_2
-               OpImageWrite %24 %25 %26
+               OpStore %arg_1 %19
+               OpStore %arg_2 %24
+         %28 = OpLoad %11 %arg_0
+         %29 = OpLoad %v3uint %arg_1
+         %30 = OpLoad %v4float %arg_2
+               OpImageWrite %28 %29 %30
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %27
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %textureStore_fcbe66
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureStore_fcbe66
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %33
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureStore_fcbe66
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureStore_fcbe66
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %textureStore_fcbe66
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %textureStore_fcbe66
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.wgsl
index 8401058..580017e 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 @group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, write>;
 
 fn textureStore_fcbe66() {
-  var arg_1 = vec3<u32>();
-  var arg_2 = vec4<f32>();
+  var arg_1 = vec3<u32>(1u);
+  var arg_2 = vec4<f32>(1.0f);
   textureStore(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl
index 9126e10..8c61c4e 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl
@@ -24,9 +24,9 @@
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16uint, write>, coords: vec2<i32>, array_index: u32, value: vec4<u32>)
 fn textureStore_fd350c() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.dxc.hlsl
index d932e87..fb441fd 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_fd350c() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.fxc.hlsl
index d932e87..fb441fd 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
 void textureStore_fd350c() {
-  int2 arg_1 = (0).xx;
+  int2 arg_1 = (1).xx;
   uint arg_2 = 1u;
-  uint4 arg_3 = (0u).xxxx;
+  uint4 arg_3 = (1u).xxxx;
   arg_0[int3(arg_1, int(arg_2))] = arg_3;
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.glsl
index 6b1fe61..aa4132a 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_fd350c() {
-  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);
 }
 
@@ -26,9 +26,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_fd350c() {
-  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);
 }
 
@@ -44,9 +44,9 @@
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_fd350c() {
-  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/fd350c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.msl
index a35e4c8..242dda3 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.msl
@@ -2,9 +2,9 @@
 
 using namespace metal;
 void textureStore_fd350c(texture2d_array<uint, access::write> tint_symbol_1) {
-  int2 arg_1 = int2(0);
+  int2 arg_1 = int2(1);
   uint arg_2 = 1u;
-  uint4 arg_3 = uint4(0u);
+  uint4 arg_3 = uint4(1u);
   tint_symbol_1.write(arg_3, uint2(arg_1), arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.spvasm
index 1dcd751..054cd16 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 54
+; Bound: 57
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -42,55 +42,58 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-         %19 = OpConstantNull %v2int
+      %int_1 = OpConstant %int 1
+         %20 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2int = OpTypePointer Function %v2int
+         %23 = OpConstantNull %v2int
      %uint_1 = OpConstant %uint 1
 %_ptr_Function_uint = OpTypePointer Function %uint
-         %25 = OpConstantNull %uint
+         %27 = OpConstantNull %uint
      %v4uint = OpTypeVector %uint 4
-         %27 = OpConstantNull %v4uint
+         %29 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
+         %32 = OpConstantNull %v4uint
       %v3int = OpTypeVector %int 3
-         %40 = OpTypeFunction %v4float
+         %43 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %textureStore_fd350c = OpFunction %void None %13
          %16 = OpLabel
-      %arg_1 = OpVariable %_ptr_Function_v2int Function %19
-      %arg_2 = OpVariable %_ptr_Function_uint Function %25
-      %arg_3 = OpVariable %_ptr_Function_v4uint Function %27
-               OpStore %arg_1 %19
+      %arg_1 = OpVariable %_ptr_Function_v2int Function %23
+      %arg_2 = OpVariable %_ptr_Function_uint Function %27
+      %arg_3 = OpVariable %_ptr_Function_v4uint Function %32
+               OpStore %arg_1 %20
                OpStore %arg_2 %uint_1
-               OpStore %arg_3 %27
-         %31 = OpLoad %11 %arg_0
-         %33 = OpLoad %v2int %arg_1
-         %34 = OpCompositeExtract %int %33 0
-         %35 = OpCompositeExtract %int %33 1
-         %37 = OpLoad %uint %arg_2
-         %36 = OpBitcast %int %37
-         %38 = OpCompositeConstruct %v3int %34 %35 %36
-         %39 = OpLoad %v4uint %arg_3
-               OpImageWrite %31 %38 %39
+               OpStore %arg_3 %29
+         %34 = OpLoad %11 %arg_0
+         %36 = OpLoad %v2int %arg_1
+         %37 = OpCompositeExtract %int %36 0
+         %38 = OpCompositeExtract %int %36 1
+         %40 = OpLoad %uint %arg_2
+         %39 = OpBitcast %int %40
+         %41 = OpCompositeConstruct %v3int %37 %38 %39
+         %42 = OpLoad %v4uint %arg_3
+               OpImageWrite %34 %41 %42
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %40
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %textureStore_fd350c
+%vertex_main_inner = OpFunction %v4float None %43
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureStore_fd350c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %45 = OpLabel
-         %46 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %46
+         %48 = OpLabel
+         %49 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %49
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureStore_fd350c
+         %52 = OpLabel
+         %53 = OpFunctionCall %void %textureStore_fd350c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %52 = OpLabel
-         %53 = OpFunctionCall %void %textureStore_fd350c
+         %55 = OpLabel
+         %56 = OpFunctionCall %void %textureStore_fd350c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.wgsl
index 6e3a293..1a03bcc 100644
--- a/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fd350c.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureStore_fd350c() {
-  var arg_1 = vec2<i32>();
+  var arg_1 = vec2<i32>(1i);
   var arg_2 = 1u;
-  var arg_3 = vec4<u32>();
+  var arg_3 = vec4<u32>(1u);
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
