test/intrinsics/gen: Use '0' for level parameters

The level parameter needs to be zero for a number of texture overloads.
Bodging the template to emit 0 instead of 1 for any `level : i32` parameter is the easiest fix here.

Change-Id: I69222578efcd0d4f4f267fb59fec691b52786d9c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57301
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
index 2ddd334..bb7a3b0 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_depth_2d, level: i32) -> vec2<i32>
 fn textureDimensions_12c9bb() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.hlsl
index 5ad05e3..c5b8ecc 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_12c9bb() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.msl
index a570183..b57d4e7 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_12c9bb(depth2d<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(depth2d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.spvasm
index 599497a..599b117 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %16 = OpImageQuerySizeLod %v2int %19 %int_1
+         %16 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
index 0748dc1..1dd859f 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_2d;
 
 fn textureDimensions_12c9bb() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl
index 804f416..c431bbd 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube_array<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_221f22() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.hlsl
index 02eb321..6905b16 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_221f22() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.msl
index b4e04ef..ca08ead 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_221f22(texturecube_array<int, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube_array<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.spvasm
index 5703541..acc2539 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %17 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %17
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
index e22b81e..55707cd 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube_array<i32>;
 
 fn textureDimensions_221f22() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl b/test/intrinsics/gen/textureDimensions/267788.wgsl
index 905d17d..36846b6 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d_array<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_267788() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.hlsl
index 721563b..c405f33 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_267788() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.msl
index c5b753e..e51eced 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_267788(texture2d_array<uint, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d_array<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.spvasm
index 4b3cbc2..3cddc55 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %26 = OpConstantNull %v2int
          %27 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %26
          %22 = OpLoad %7 %arg_0
-         %20 = OpImageQuerySizeLod %v3int %22 %int_1
+         %20 = OpImageQuerySizeLod %v3int %22 %int_0
          %17 = OpVectorShuffle %v2int %20 %20 0 1
                OpStore %res %17
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
index edd3a94..baf7d3a 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
 
 fn textureDimensions_267788() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
index 26f8c6b..7f84a66 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_3d<f32>, level: i32) -> vec3<i32>
 fn textureDimensions_26bdfa() {
-  var res: vec3<i32> = textureDimensions(arg_0, 1);
+  var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.hlsl
index d57ccb4..2789974 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_26bdfa() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int3 res = tint_tmp.xyz;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.msl
index 372f1c7..9f8544b 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_26bdfa(texture3d<float, access::sample> tint_symbol_2) {
-  int3 res = int3(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1), tint_symbol_2.get_depth(1));
+  int3 res = int3(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0), tint_symbol_2.get_depth(0));
 }
 
 vertex tint_symbol vertex_main(texture3d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.spvasm
index c851fa4..56f79d4 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v3int = OpTypePointer Function %v3int
          %23 = OpConstantNull %v3int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v3int Function %23
          %19 = OpLoad %7 %arg_0
-         %16 = OpImageQuerySizeLod %v3int %19 %int_1
+         %16 = OpImageQuerySizeLod %v3int %19 %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
index 30312c3..7a1e888 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
 
 fn textureDimensions_26bdfa() {
-  var res : vec3<i32> = textureDimensions(arg_0, 1);
+  var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl
index 07d0bf0..4752fc1 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_3d<u32>, level: i32) -> vec3<i32>
 fn textureDimensions_2efa05() {
-  var res: vec3<i32> = textureDimensions(arg_0, 1);
+  var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.hlsl
index 03b2311..60d38be 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_2efa05() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int3 res = tint_tmp.xyz;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.msl
index 0831f92..e2c96aa 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_2efa05(texture3d<uint, access::sample> tint_symbol_2) {
-  int3 res = int3(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1), tint_symbol_2.get_depth(1));
+  int3 res = int3(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0), tint_symbol_2.get_depth(0));
 }
 
 vertex tint_symbol vertex_main(texture3d<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.spvasm
index 6ed8b5b..b33db34 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v3int = OpTypePointer Function %v3int
          %24 = OpConstantNull %v3int
          %25 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v3int Function %24
          %20 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v3int %20 %int_1
+         %17 = OpImageQuerySizeLod %v3int %20 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
index 5e22e62..faea123 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
 
 fn textureDimensions_2efa05() {
-  var res : vec3<i32> = textureDimensions(arg_0, 1);
+  var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
index 1cdfc52..5fe606e 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_2fe1cc() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.hlsl
index 183b27b..7a2011d 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_2fe1cc() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.msl
index bbe8e90..1c43903 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_2fe1cc(texture2d<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.spvasm
index 0af8187..d769ee2 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %16 = OpImageQuerySizeLod %v2int %19 %int_1
+         %16 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
index 0f0177d..3871292 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
 
 fn textureDimensions_2fe1cc() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
index dd9bd91..67e2a6b 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube_array<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_50a9ee() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.hlsl
index 3e0a372..20ac9bb 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_50a9ee() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.msl
index 8787cf3..7752e97 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_50a9ee(texturecube_array<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.spvasm
index db646ea..765d401 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %16 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
index f72e872..b8e312e 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
 
 fn textureDimensions_50a9ee() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl
index eff3ddd..28f3f1a 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_686ef2() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.hlsl
index bae37d5..751dbd9 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_686ef2() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.msl
index 777d0c2..d6e55a9 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_686ef2(texturecube<int, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.spvasm
index c7253e2..8d7860c 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v2int %19 %int_1
+         %17 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
index 2797b13..2fcfe40 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube<i32>;
 
 fn textureDimensions_686ef2() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
index 5224d23..cdf8de1 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_depth_2d_array, level: i32) -> vec2<i32>
 fn textureDimensions_72e5d6() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.hlsl
index 21afa32..66a07ad 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_72e5d6() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.msl
index 4b4629d..0dac5b2 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_72e5d6(depth2d_array<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.spvasm
index 91db5ac..95cf62b 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %16 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
index 01d8430..967f86a 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
 
 fn textureDimensions_72e5d6() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl
index 7f3ad19..565c566 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d_array<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_85d556() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.hlsl
index 79ffdeb..f85cb73 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_85d556() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.msl
index 2e35fd0..14a71d5 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_85d556(texture2d_array<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.spvasm
index 101c258..0b8ccff 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %16 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
index 3f4a9ca..66fc1a8 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
 
 fn textureDimensions_85d556() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl
index 74fea42..867ebde 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_88ad17() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.hlsl
index 49805c2..f836987 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_88ad17() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.msl
index 6a875fe..4c22410 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_88ad17(texturecube<uint, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.spvasm
index 1deede9..f47c525 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %24 = OpConstantNull %v2int
          %25 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %24
          %20 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v2int %20 %int_1
+         %17 = OpImageQuerySizeLod %v2int %20 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
index 92d1777..b2cb369 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube<u32>;
 
 fn textureDimensions_88ad17() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl
index 9b1f7c7..0fd7903 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_depth_cube, level: i32) -> vec2<i32>
 fn textureDimensions_9393b0() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.hlsl
index 6adbddb..15f57cf 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_9393b0() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.msl
index d26fb35..8da4697 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_9393b0(depthcube<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(depthcube<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.spvasm
index efacb01..570b740 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %16 = OpImageQuerySizeLod %v2int %19 %int_1
+         %16 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
index bd773c8..ddf6ecd 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_cube;
 
 fn textureDimensions_9393b0() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
index f96b515..edd2e9e 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d_array<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_9c9c57() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.hlsl
index 6c71a9c..d4045da 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_9c9c57() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.msl
index 3e14184..c82553c 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_9c9c57(texture2d_array<int, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d_array<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.spvasm
index 357711c..a6b9920 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %17 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %17
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
index 2d885fc..4ee4826 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
 
 fn textureDimensions_9c9c57() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl
index 134b057..85a6007 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_depth_cube_array, level: i32) -> vec2<i32>
 fn textureDimensions_a01845() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.hlsl
index d4c8347..6d07acc 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_a01845() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.msl
index 713316b..8b354ae 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_a01845(depthcube_array<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(depthcube_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.spvasm
index b7cb545..40146a8 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %25 = OpConstantNull %v2int
          %26 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %25
          %21 = OpLoad %7 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_1
+         %19 = OpImageQuerySizeLod %v3int %21 %int_0
          %16 = OpVectorShuffle %v2int %19 %19 0 1
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
index 618b7e2..ab0f9eb 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
 
 fn textureDimensions_a01845() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
index b5837e3..a2f5e33 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_a9c9c1() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.hlsl
index 4e48aa0..4ce2382 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_a9c9c1() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.msl
index 4e1e500..9bc22b2 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_a9c9c1(texturecube<float, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.spvasm
index 7826957..ae83811 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %16 = OpImageQuerySizeLod %v2int %19 %int_1
+         %16 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
index ee211ab..754fc31 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
 
 fn textureDimensions_a9c9c1() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
index 68ab1d5..b4a35f0 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_b0e16d() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.hlsl
index 99cf9a3..04aeb4d 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_b0e16d() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.msl
index 5f26a99..45768ed 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_b0e16d(texture2d<int, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.spvasm
index dc421fd..e42d9e0 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %23 = OpConstantNull %v2int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %23
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v2int %19 %int_1
+         %17 = OpImageQuerySizeLod %v2int %19 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
index 581b0a1..665a62b 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
 
 fn textureDimensions_b0e16d() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl
index 53739ca..a15bcc5 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_cube_array<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_d83c45() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.hlsl
index 11d5482..c79bd7a 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_d83c45() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.msl
index 4d681e6..92c3471 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_d83c45(texturecube_array<uint, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texturecube_array<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.spvasm
index 77bbf15..ee0b694 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.spvasm
@@ -43,7 +43,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %26 = OpConstantNull %v2int
          %27 = OpTypeFunction %void %v4float
@@ -52,7 +52,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %26
          %22 = OpLoad %7 %arg_0
-         %20 = OpImageQuerySizeLod %v3int %22 %int_1
+         %20 = OpImageQuerySizeLod %v3int %22 %int_0
          %17 = OpVectorShuffle %v2int %20 %20 0 1
                OpStore %res %17
                OpReturn
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
index 97647bc..36e283f 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_cube_array<u32>;
 
 fn textureDimensions_d83c45() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
index cb474e6..121c855 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_3d<i32>, level: i32) -> vec3<i32>
 fn textureDimensions_efc8a4() {
-  var res: vec3<i32> = textureDimensions(arg_0, 1);
+  var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.hlsl
index 9467dd07..68dee58 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_efc8a4() {
   int4 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
   int3 res = tint_tmp.xyz;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.msl
index 8537677..b137191 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_efc8a4(texture3d<int, access::sample> tint_symbol_2) {
-  int3 res = int3(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1), tint_symbol_2.get_depth(1));
+  int3 res = int3(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0), tint_symbol_2.get_depth(0));
 }
 
 vertex tint_symbol vertex_main(texture3d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.spvasm
index c4abad8..bf8e0dc 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
       %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v3int = OpTypePointer Function %v3int
          %23 = OpConstantNull %v3int
          %24 = OpTypeFunction %void %v4float
@@ -49,7 +49,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v3int Function %23
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v3int %19 %int_1
+         %17 = OpImageQuerySizeLod %v3int %19 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
index 26d79f3..213bf04 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
 
 fn textureDimensions_efc8a4() {
-  var res : vec3<i32> = textureDimensions(arg_0, 1);
+  var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl
index d9bfeae..f0887c3 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureDimensions(texture: texture_2d<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_f7145b() {
-  var res: vec2<i32> = textureDimensions(arg_0, 1);
+  var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.hlsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.hlsl
index cd43d4d..02cd89f 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 
 void textureDimensions_f7145b() {
   int3 tint_tmp;
-  arg_0.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+  arg_0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
   int2 res = tint_tmp.xy;
 }
 
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.msl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.msl
index b144b7d..f1cff27 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureDimensions_f7145b(texture2d<uint, access::sample> tint_symbol_2) {
-  int2 res = int2(tint_symbol_2.get_width(1), tint_symbol_2.get_height(1));
+  int2 res = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
 }
 
 vertex tint_symbol vertex_main(texture2d<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.spvasm b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.spvasm
index fe17045..7ef3114 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
          %13 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v2int = OpTypePointer Function %v2int
          %24 = OpConstantNull %v2int
          %25 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v2int Function %24
          %20 = OpLoad %7 %arg_0
-         %17 = OpImageQuerySizeLod %v2int %20 %int_1
+         %17 = OpImageQuerySizeLod %v2int %20 %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
index d9461dc..86aa13f 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
 
 fn textureDimensions_f7145b() {
-  var res : vec2<i32> = textureDimensions(arg_0, 1);
+  var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl
index b527ab2..d650031 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_depth_2d, coords: vec2<i32>, level: i32) -> f32
 fn textureLoad_19cf87() {
-  var res: f32 = textureLoad(arg_0, vec2<i32>(), 1);
+  var res: f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.hlsl
index 6430b2c..554c2db 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2D arg_0 : register(t0, space1);
 
 void textureLoad_19cf87() {
-  float res = arg_0.Load(int3(0, 0, 1)).x;
+  float res = arg_0.Load(int3(0, 0, 0)).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.msl
index 47fc544..ba5d335 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_19cf87(depth2d<float, access::sample> tint_symbol_2) {
-  float res = tint_symbol_2.read(uint2(int2()), 1);
+  float res = tint_symbol_2.read(uint2(int2()), 0);
 }
 
 vertex tint_symbol vertex_main(depth2d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.spvasm
index dfa8896..697f575 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
          %21 = OpConstantNull %v2int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_float = OpTypePointer Function %float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
@@ -48,7 +48,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %4
          %18 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4float %18 %21 Lod %int_1
+         %17 = OpImageFetch %v4float %18 %21 Lod %int_0
          %16 = OpCompositeExtract %float %17 0
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
index 88ea6a1..ec9ae1e 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_2d;
 
 fn textureLoad_19cf87() {
-  var res : f32 = textureLoad(arg_0, vec2<i32>(), 1);
+  var res : f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl
index 05dcd51..3801d85 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_1d<u32>, coords: i32, level: i32) -> vec4<u32>
 fn textureLoad_1b8588() {
-  var res: vec4<u32> = textureLoad(arg_0, 1, 1);
+  var res: vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.hlsl
index ec7997d..c2ee2f7 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 
 void textureLoad_1b8588() {
-  uint4 res = arg_0.Load(int2(1, 1));
+  uint4 res = arg_0.Load(int2(1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.msl
index 50729e0..6a87c63 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.msl
@@ -1,8 +1,3 @@
-SKIP: FAILED
-
-
-
-Validation Failure:
 #include <metal_stdlib>
 
 using namespace metal;
@@ -10,60 +5,23 @@
   float4 value [[position]];
 };
 
-void textureLoad_1b8588(thread texture1d<uint, access::sample>* const tint_symbol_2) {
-  uint4 res = (*(tint_symbol_2)).read(uint(1), 1);
+void textureLoad_1b8588(texture1d<uint, access::sample> tint_symbol_2) {
+  uint4 res = tint_symbol_2.read(uint(1), 0);
 }
 
-vertex tint_symbol vertex_main(texture1d<uint, access::sample> tint_symbol_4 [[texture(0)]]) {
-  texture1d<uint, access::sample> tint_symbol_5 = tint_symbol_4;
-  thread texture1d<uint, access::sample>* const tint_symbol_3 = &(tint_symbol_5);
+vertex tint_symbol vertex_main(texture1d<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
   textureLoad_1b8588(tint_symbol_3);
   tint_symbol const tint_symbol_1 = {.value=float4()};
   return tint_symbol_1;
 }
 
-fragment void fragment_main(texture1d<uint, access::sample> tint_symbol_7 [[texture(0)]]) {
-  texture1d<uint, access::sample> tint_symbol_8 = tint_symbol_7;
-  thread texture1d<uint, access::sample>* const tint_symbol_6 = &(tint_symbol_8);
-  textureLoad_1b8588(tint_symbol_6);
+fragment void fragment_main(texture1d<uint, access::sample> tint_symbol_4 [[texture(0)]]) {
+  textureLoad_1b8588(tint_symbol_4);
   return;
 }
 
-kernel void compute_main(texture1d<uint, access::sample> tint_symbol_10 [[texture(0)]]) {
-  texture1d<uint, access::sample> tint_symbol_11 = tint_symbol_10;
-  thread texture1d<uint, access::sample>* const tint_symbol_9 = &(tint_symbol_11);
-  textureLoad_1b8588(tint_symbol_9);
+kernel void compute_main(texture1d<uint, access::sample> tint_symbol_5 [[texture(0)]]) {
+  textureLoad_1b8588(tint_symbol_5);
   return;
 }
 
-
-Compilation failed: 
-
-program_source:9:34: error: no matching member function for call to 'read'
-  uint4 res = (*(tint_symbol_2)).read(uint(1), 1);
-              ~~~~~~~~~~~~~~~~~~~^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1132:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const device metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1164:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const constant metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1196:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const ray_data metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1117:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const device metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1149:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const constant metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1181:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<uint, access::sample>' (aka 'texture1d<unsigned int, access::sample>')), parameter type must be 'const ray_data metal::texture1d<unsigned int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1086:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                    ~~~~~~~~~~~~~~~~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1101:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                ~~~~~~~~~~~~~~~~~~~
-
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.spvasm
index 718494f..8a5913e 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 40
+; Bound: 41
 ; Schema: 0
                OpCapability Shader
                OpCapability Sampled1D
@@ -42,38 +42,39 @@
      %v4uint = OpTypeVector %uint 4
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
-         %24 = OpConstantNull %v4uint
-         %25 = OpTypeFunction %void %v4float
+         %25 = OpConstantNull %v4uint
+         %26 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureLoad_1b8588 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_v4uint Function %24
+        %res = OpVariable %_ptr_Function_v4uint Function %25
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4uint %19 %int_1 Lod %int_1
+         %17 = OpImageFetch %v4uint %19 %int_1 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %25
+%tint_symbol_2 = OpFunction %void None %26
 %tint_symbol = OpFunctionParameter %v4float
-         %28 = OpLabel
+         %29 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %30 = OpLabel
+         %31 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %textureLoad_1b8588
-         %33 = OpFunctionCall %void %tint_symbol_2 %12
+         %33 = OpFunctionCall %void %textureLoad_1b8588
+         %34 = OpFunctionCall %void %tint_symbol_2 %12
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %textureLoad_1b8588
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureLoad_1b8588
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %textureLoad_1b8588
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %textureLoad_1b8588
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
index 1745e6e..58a627c 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_1d<u32>;
 
 fn textureLoad_1b8588() {
-  var res : vec4<u32> = textureLoad(arg_0, 1, 1);
+  var res : vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl
index e289ac9..c95d6d1 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_3d<f32>, coords: vec3<i32>, level: i32) -> vec4<f32>
 fn textureLoad_1f2016() {
-  var res: vec4<f32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res: vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.hlsl
index a165236..0830c11 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 
 void textureLoad_1f2016() {
-  float4 res = arg_0.Load(int4(0, 0, 0, 1));
+  float4 res = arg_0.Load(int4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.msl
index b8f035a..59c6ae9 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_1f2016(texture3d<float, access::sample> tint_symbol_2) {
-  float4 res = tint_symbol_2.read(uint3(int3()), 1);
+  float4 res = tint_symbol_2.read(uint3(int3()), 0);
 }
 
 vertex tint_symbol vertex_main(texture3d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.spvasm
index 75b765a..be992fd 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
          %20 = OpConstantNull %v3int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %24 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
@@ -48,7 +48,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %11
          %17 = OpLoad %7 %arg_0
-         %16 = OpImageFetch %v4float %17 %20 Lod %int_1
+         %16 = OpImageFetch %v4float %17 %20 Lod %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
index 241b40e..70c8e62 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
 
 fn textureLoad_1f2016() {
-  var res : vec4<f32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res : vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl b/test/intrinsics/gen/textureLoad/484344.wgsl
index 5c0d2f6..37b5a5f 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d<f32>, coords: vec2<i32>, level: i32) -> vec4<f32>
 fn textureLoad_484344() {
-  var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.hlsl
index 5a2bb89..1822b01 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 
 void textureLoad_484344() {
-  float4 res = arg_0.Load(int3(0, 0, 1));
+  float4 res = arg_0.Load(int3(0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.msl
index 2b581c6..fd34daa 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_484344(texture2d<float, access::sample> tint_symbol_2) {
-  float4 res = tint_symbol_2.read(uint2(int2()), 1);
+  float4 res = tint_symbol_2.read(uint2(int2()), 0);
 }
 
 vertex tint_symbol vertex_main(texture2d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.spvasm
index df04a3f..a45d27d 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.spvasm
@@ -40,7 +40,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
          %20 = OpConstantNull %v2int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %24 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
@@ -48,7 +48,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %11
          %17 = OpLoad %7 %arg_0
-         %16 = OpImageFetch %v4float %17 %20 Lod %int_1
+         %16 = OpImageFetch %v4float %17 %20 Lod %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
index a6e36d9..d198e1e 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
 
 fn textureLoad_484344() {
-  var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl
index c8244d7..bde90c7 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_3d<i32>, coords: vec3<i32>, level: i32) -> vec4<i32>
 fn textureLoad_4fd803() {
-  var res: vec4<i32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res: vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.hlsl
index 1579b35..0f08b51 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 
 void textureLoad_4fd803() {
-  int4 res = arg_0.Load(int4(0, 0, 0, 1));
+  int4 res = arg_0.Load(int4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.msl
index 697c829..1d265dd 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_4fd803(texture3d<int, access::sample> tint_symbol_2) {
-  int4 res = tint_symbol_2.read(uint3(int3()), 1);
+  int4 res = tint_symbol_2.read(uint3(int3()), 0);
 }
 
 vertex tint_symbol vertex_main(texture3d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.spvasm
index 4387f2b..8c4a2be 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
       %v4int = OpTypeVector %int 4
       %v3int = OpTypeVector %int 3
          %21 = OpConstantNull %v3int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4int = OpTypePointer Function %v4int
          %25 = OpConstantNull %v4int
          %26 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4int Function %25
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4int %19 %21 Lod %int_1
+         %17 = OpImageFetch %v4int %19 %21 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
index 5d129db..08653d9 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
 
 fn textureLoad_4fd803() {
-  var res : vec4<i32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res : vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
index ca38011..5fd2dcc 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_1d<i32>, coords: i32, level: i32) -> vec4<i32>
 fn textureLoad_5a2f9d() {
-  var res: vec4<i32> = textureLoad(arg_0, 1, 1);
+  var res: vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.hlsl
index 34c04af..cbcacca 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 
 void textureLoad_5a2f9d() {
-  int4 res = arg_0.Load(int2(1, 1));
+  int4 res = arg_0.Load(int2(1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.msl
index 7a922a6..321459d 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.msl
@@ -1,8 +1,3 @@
-SKIP: FAILED
-
-
-
-Validation Failure:
 #include <metal_stdlib>
 
 using namespace metal;
@@ -10,60 +5,23 @@
   float4 value [[position]];
 };
 
-void textureLoad_5a2f9d(thread texture1d<int, access::sample>* const tint_symbol_2) {
-  int4 res = (*(tint_symbol_2)).read(uint(1), 1);
+void textureLoad_5a2f9d(texture1d<int, access::sample> tint_symbol_2) {
+  int4 res = tint_symbol_2.read(uint(1), 0);
 }
 
-vertex tint_symbol vertex_main(texture1d<int, access::sample> tint_symbol_4 [[texture(0)]]) {
-  texture1d<int, access::sample> tint_symbol_5 = tint_symbol_4;
-  thread texture1d<int, access::sample>* const tint_symbol_3 = &(tint_symbol_5);
+vertex tint_symbol vertex_main(texture1d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
   textureLoad_5a2f9d(tint_symbol_3);
   tint_symbol const tint_symbol_1 = {.value=float4()};
   return tint_symbol_1;
 }
 
-fragment void fragment_main(texture1d<int, access::sample> tint_symbol_7 [[texture(0)]]) {
-  texture1d<int, access::sample> tint_symbol_8 = tint_symbol_7;
-  thread texture1d<int, access::sample>* const tint_symbol_6 = &(tint_symbol_8);
-  textureLoad_5a2f9d(tint_symbol_6);
+fragment void fragment_main(texture1d<int, access::sample> tint_symbol_4 [[texture(0)]]) {
+  textureLoad_5a2f9d(tint_symbol_4);
   return;
 }
 
-kernel void compute_main(texture1d<int, access::sample> tint_symbol_10 [[texture(0)]]) {
-  texture1d<int, access::sample> tint_symbol_11 = tint_symbol_10;
-  thread texture1d<int, access::sample>* const tint_symbol_9 = &(tint_symbol_11);
-  textureLoad_5a2f9d(tint_symbol_9);
+kernel void compute_main(texture1d<int, access::sample> tint_symbol_5 [[texture(0)]]) {
+  textureLoad_5a2f9d(tint_symbol_5);
   return;
 }
 
-
-Compilation failed: 
-
-program_source:9:33: error: no matching member function for call to 'read'
-  int4 res = (*(tint_symbol_2)).read(uint(1), 1);
-             ~~~~~~~~~~~~~~~~~~~^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1132:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const device metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1164:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const constant metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1196:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const ray_data metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1117:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const device metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1149:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const constant metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1181:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<int, access::sample>'), parameter type must be 'const ray_data metal::texture1d<int, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1086:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                    ~~~~~~~~~~~~~~~~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1101:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                ~~~~~~~~~~~~~~~~~~~
-
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.spvasm
index dffe9a1..43422f0 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 39
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability Sampled1D
@@ -41,38 +41,39 @@
          %13 = OpTypeFunction %void
       %v4int = OpTypeVector %int 4
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4int = OpTypePointer Function %v4int
-         %23 = OpConstantNull %v4int
-         %24 = OpTypeFunction %void %v4float
+         %24 = OpConstantNull %v4int
+         %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureLoad_5a2f9d = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %23
+        %res = OpVariable %_ptr_Function_v4int Function %24
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4int %19 %int_1 Lod %int_1
+         %17 = OpImageFetch %v4int %19 %int_1 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %24
+%tint_symbol_2 = OpFunction %void None %25
 %tint_symbol = OpFunctionParameter %v4float
-         %27 = OpLabel
+         %28 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
-         %29 = OpLabel
+         %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %31 = OpFunctionCall %void %textureLoad_5a2f9d
-         %32 = OpFunctionCall %void %tint_symbol_2 %12
+         %32 = OpFunctionCall %void %textureLoad_5a2f9d
+         %33 = OpFunctionCall %void %tint_symbol_2 %12
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureLoad_5a2f9d
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %textureLoad_5a2f9d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureLoad_5a2f9d
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %textureLoad_5a2f9d
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
index eab243d..ecaf9a0 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_1d<i32>;
 
 fn textureLoad_5a2f9d() {
-  var res : vec4<i32> = textureLoad(arg_0, 1, 1);
+  var res : vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl
index 40f579c..5786c34 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d<u32>, coords: vec2<i32>, level: i32) -> vec4<u32>
 fn textureLoad_6154d4() {
-  var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.hlsl
index 6e07c07..6ab4c19 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 
 void textureLoad_6154d4() {
-  uint4 res = arg_0.Load(int3(0, 0, 1));
+  uint4 res = arg_0.Load(int3(0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.msl
index c87ec8e..1e09e76 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_6154d4(texture2d<uint, access::sample> tint_symbol_2) {
-  uint4 res = tint_symbol_2.read(uint2(int2()), 1);
+  uint4 res = tint_symbol_2.read(uint2(int2()), 0);
 }
 
 vertex tint_symbol vertex_main(texture2d<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.spvasm
index 86aaa23..6a4c040 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
          %22 = OpConstantNull %v2int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
          %26 = OpConstantNull %v4uint
          %27 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4uint Function %26
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4uint %19 %22 Lod %int_1
+         %17 = OpImageFetch %v4uint %19 %22 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
index 89b2469..64e28d7 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
 
 fn textureLoad_6154d4() {
-  var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl b/test/intrinsics/gen/textureLoad/79e697.wgsl
index 773fa84..3ce2841 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d_array<i32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<i32>
 fn textureLoad_79e697() {
-  var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.hlsl
index 53a8b2a..c6c8722 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 
 void textureLoad_79e697() {
-  int4 res = arg_0.Load(int4(0, 0, 1, 1));
+  int4 res = arg_0.Load(int4(0, 0, 1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.msl
index c065d507..de78089 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_79e697(texture2d_array<int, access::sample> tint_symbol_2) {
-  int4 res = tint_symbol_2.read(uint2(int2()), 1, 1);
+  int4 res = tint_symbol_2.read(uint2(int2()), 1, 0);
 }
 
 vertex tint_symbol vertex_main(texture2d_array<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.spvasm
index 8c010bc..b4135d9 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.spvasm
@@ -51,7 +51,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4int Function %26
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4int %19 %23 Lod %int_1
+         %17 = OpImageFetch %v4int %19 %23 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
index 9ee735b..f93cbe0 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
 
 fn textureLoad_79e697() {
-  var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl
index 6d5427f..3207c05 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d_array<u32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<u32>
 fn textureLoad_7c90e5() {
-  var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.hlsl
index 01721d0..be53320 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 
 void textureLoad_7c90e5() {
-  uint4 res = arg_0.Load(int4(0, 0, 1, 1));
+  uint4 res = arg_0.Load(int4(0, 0, 1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.msl
index 0ca9e06..044fd52 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_7c90e5(texture2d_array<uint, access::sample> tint_symbol_2) {
-  uint4 res = tint_symbol_2.read(uint2(int2()), 1, 1);
+  uint4 res = tint_symbol_2.read(uint2(int2()), 1, 0);
 }
 
 vertex tint_symbol vertex_main(texture2d_array<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
index ff1f583..2180701 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.spvasm
@@ -52,7 +52,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4uint Function %27
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4uint %19 %24 Lod %int_1
+         %17 = OpImageFetch %v4uint %19 %24 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
index cc01715..779b955 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
 
 fn textureLoad_7c90e5() {
-  var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl b/test/intrinsics/gen/textureLoad/81c381.wgsl
index eee420a..4c156c6 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_1d<f32>, coords: i32, level: i32) -> vec4<f32>
 fn textureLoad_81c381() {
-  var res: vec4<f32> = textureLoad(arg_0, 1, 1);
+  var res: vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.hlsl
index b0549a9..20e1742 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 
 void textureLoad_81c381() {
-  float4 res = arg_0.Load(int2(1, 1));
+  float4 res = arg_0.Load(int2(1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.msl
index f583a3e..1ca1a43 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.msl
@@ -1,8 +1,3 @@
-SKIP: FAILED
-
-
-
-Validation Failure:
 #include <metal_stdlib>
 
 using namespace metal;
@@ -10,60 +5,23 @@
   float4 value [[position]];
 };
 
-void textureLoad_81c381(thread texture1d<float, access::sample>* const tint_symbol_2) {
-  float4 res = (*(tint_symbol_2)).read(uint(1), 1);
+void textureLoad_81c381(texture1d<float, access::sample> tint_symbol_2) {
+  float4 res = tint_symbol_2.read(uint(1), 0);
 }
 
-vertex tint_symbol vertex_main(texture1d<float, access::sample> tint_symbol_4 [[texture(0)]]) {
-  texture1d<float, access::sample> tint_symbol_5 = tint_symbol_4;
-  thread texture1d<float, access::sample>* const tint_symbol_3 = &(tint_symbol_5);
+vertex tint_symbol vertex_main(texture1d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
   textureLoad_81c381(tint_symbol_3);
   tint_symbol const tint_symbol_1 = {.value=float4()};
   return tint_symbol_1;
 }
 
-fragment void fragment_main(texture1d<float, access::sample> tint_symbol_7 [[texture(0)]]) {
-  texture1d<float, access::sample> tint_symbol_8 = tint_symbol_7;
-  thread texture1d<float, access::sample>* const tint_symbol_6 = &(tint_symbol_8);
-  textureLoad_81c381(tint_symbol_6);
+fragment void fragment_main(texture1d<float, access::sample> tint_symbol_4 [[texture(0)]]) {
+  textureLoad_81c381(tint_symbol_4);
   return;
 }
 
-kernel void compute_main(texture1d<float, access::sample> tint_symbol_10 [[texture(0)]]) {
-  texture1d<float, access::sample> tint_symbol_11 = tint_symbol_10;
-  thread texture1d<float, access::sample>* const tint_symbol_9 = &(tint_symbol_11);
-  textureLoad_81c381(tint_symbol_9);
+kernel void compute_main(texture1d<float, access::sample> tint_symbol_5 [[texture(0)]]) {
+  textureLoad_81c381(tint_symbol_5);
   return;
 }
 
-
-Compilation failed: 
-
-program_source:9:35: error: no matching member function for call to 'read'
-  float4 res = (*(tint_symbol_2)).read(uint(1), 1);
-               ~~~~~~~~~~~~~~~~~~~^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1132:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const device metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1164:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const constant metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1196:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const ray_data metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1117:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const device metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const device METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1149:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const constant metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const constant METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1181:24: note: candidate function not viable: address space mismatch in 'this' argument ('texture1d<float, access::sample>'), parameter type must be 'const ray_data metal::texture1d<float, metal::access::sample, void>'
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const ray_data METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1086:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(ushort coord, ushort lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                    ~~~~~~~~~~~~~~~~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_texture:1101:24: note: candidate disabled: 'lod' argument value must be 0
-  METAL_FUNC vec<T, 4> read(uint coord, uint lod = 0) const thread METAL_CONST_ARG(lod) METAL_ZERO_ARG(lod)
-                       ^                                                                ~~~~~~~~~~~~~~~~~~~
-
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.spvasm
index 507f5f4..dea096f 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Sampled1D
@@ -40,37 +40,38 @@
          %12 = OpTypeFunction %void
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4float = OpTypePointer Function %v4float
-         %22 = OpTypeFunction %void %v4float
+         %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureLoad_81c381 = OpFunction %void None %12
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %11
          %17 = OpLoad %7 %arg_0
-         %16 = OpImageFetch %v4float %17 %int_1 Lod %int_1
+         %16 = OpImageFetch %v4float %17 %int_1 Lod %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %22
+%tint_symbol_2 = OpFunction %void None %23
 %tint_symbol = OpFunctionParameter %v4float
-         %25 = OpLabel
+         %26 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
-         %27 = OpLabel
+         %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %textureLoad_81c381
-         %30 = OpFunctionCall %void %tint_symbol_2 %11
+         %30 = OpFunctionCall %void %textureLoad_81c381
+         %31 = OpFunctionCall %void %tint_symbol_2 %11
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %textureLoad_81c381
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %textureLoad_81c381
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %textureLoad_81c381
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %textureLoad_81c381
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
index caed380..0658863 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
 
 fn textureLoad_81c381() {
-  var res : vec4<f32> = textureLoad(arg_0, 1, 1);
+  var res : vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl b/test/intrinsics/gen/textureLoad/87be85.wgsl
index c97915c..39366e5 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d_array<f32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<f32>
 fn textureLoad_87be85() {
-  var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.hlsl
index 22ff303..d0546f7 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 
 void textureLoad_87be85() {
-  float4 res = arg_0.Load(int4(0, 0, 1, 1));
+  float4 res = arg_0.Load(int4(0, 0, 1, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.msl
index 0cecff9..3959083 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_87be85(texture2d_array<float, access::sample> tint_symbol_2) {
-  float4 res = tint_symbol_2.read(uint2(int2()), 1, 1);
+  float4 res = tint_symbol_2.read(uint2(int2()), 1, 0);
 }
 
 vertex tint_symbol vertex_main(texture2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.spvasm
index 45fb473..44ae488 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.spvasm
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %11
          %17 = OpLoad %7 %arg_0
-         %16 = OpImageFetch %v4float %17 %22 Lod %int_1
+         %16 = OpImageFetch %v4float %17 %22 Lod %int_0
                OpStore %res %16
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
index 7f940a3..4543559 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
 
 fn textureLoad_87be85() {
-  var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl
index f537ae6..0e09fa4 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_depth_2d_array, coords: vec2<i32>, array_index: i32, level: i32) -> f32
 fn textureLoad_9b2667() {
-  var res: f32 = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res: f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.hlsl
index 0a448f0..5d72107 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 
 void textureLoad_9b2667() {
-  float res = arg_0.Load(int4(0, 0, 1, 1)).x;
+  float res = arg_0.Load(int4(0, 0, 1, 0)).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.msl
index dc5aa61..cb7023e 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_9b2667(depth2d_array<float, access::sample> tint_symbol_2) {
-  float res = tint_symbol_2.read(uint2(int2()), 1, 1);
+  float res = tint_symbol_2.read(uint2(int2()), 1, 0);
 }
 
 vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.spvasm
index ca60678..207c92d 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.spvasm
@@ -49,7 +49,7 @@
          %15 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %4
          %18 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4float %18 %23 Lod %int_1
+         %17 = OpImageFetch %v4float %18 %23 Lod %int_0
          %16 = OpCompositeExtract %float %17 0
                OpStore %res %16
                OpReturn
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
index 7727a10..271bb61 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
 
 fn textureLoad_9b2667() {
-  var res : f32 = textureLoad(arg_0, vec2<i32>(), 1, 1);
+  var res : f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
index 7c01235..58ebcd2 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_3d<u32>, coords: vec3<i32>, level: i32) -> vec4<u32>
 fn textureLoad_a9a9f5() {
-  var res: vec4<u32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res: vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.hlsl
index 74b4671..edbeec8 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 
 void textureLoad_a9a9f5() {
-  uint4 res = arg_0.Load(int4(0, 0, 0, 1));
+  uint4 res = arg_0.Load(int4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.msl
index 3699b7f..9967f2b 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_a9a9f5(texture3d<uint, access::sample> tint_symbol_2) {
-  uint4 res = tint_symbol_2.read(uint3(int3()), 1);
+  uint4 res = tint_symbol_2.read(uint3(int3()), 0);
 }
 
 vertex tint_symbol vertex_main(texture3d<uint, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.spvasm
index a8b53e1..2d57095 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
          %22 = OpConstantNull %v3int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4uint = OpTypePointer Function %v4uint
          %26 = OpConstantNull %v4uint
          %27 = OpTypeFunction %void %v4float
@@ -51,7 +51,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4uint Function %26
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4uint %19 %22 Lod %int_1
+         %17 = OpImageFetch %v4uint %19 %22 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
index 38faefc..0a21560 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
 
 fn textureLoad_a9a9f5() {
-  var res : vec4<u32> = textureLoad(arg_0, vec3<i32>(), 1);
+  var res : vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl
index af6bcbe..f9149e7 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl
@@ -26,7 +26,7 @@
 
 // fn textureLoad(texture: texture_2d<i32>, coords: vec2<i32>, level: i32) -> vec4<i32>
 fn textureLoad_c2a480() {
-  var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.hlsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.hlsl
index b1eabd4..bc62315 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.hlsl
@@ -1,7 +1,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 
 void textureLoad_c2a480() {
-  int4 res = arg_0.Load(int3(0, 0, 1));
+  int4 res = arg_0.Load(int3(0, 0, 0));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.msl b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.msl
index 662b243..438fce1 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureLoad_c2a480(texture2d<int, access::sample> tint_symbol_2) {
-  int4 res = tint_symbol_2.read(uint2(int2()), 1);
+  int4 res = tint_symbol_2.read(uint2(int2()), 0);
 }
 
 vertex tint_symbol vertex_main(texture2d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.spvasm b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.spvasm
index 05f013f..628a152 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.spvasm
@@ -41,7 +41,7 @@
       %v4int = OpTypeVector %int 4
       %v2int = OpTypeVector %int 2
          %21 = OpConstantNull %v2int
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_v4int = OpTypePointer Function %v4int
          %25 = OpConstantNull %v4int
          %26 = OpTypeFunction %void %v4float
@@ -50,7 +50,7 @@
          %16 = OpLabel
         %res = OpVariable %_ptr_Function_v4int Function %25
          %19 = OpLoad %7 %arg_0
-         %17 = OpImageFetch %v4int %19 %21 Lod %int_1
+         %17 = OpImageFetch %v4int %19 %21 Lod %int_0
                OpStore %res %17
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
index f72ec14..e8cee3f 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 [[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
 
 fn textureLoad_c2a480() {
-  var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
+  var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
index 4b60cae..5cb8e08 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32) -> f32
 fn textureSampleLevel_02be59() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1);
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.hlsl
index 91b31b0..78c5d89 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_02be59() {
-  float res = arg_0.SampleLevel(arg_1, float2(0.0f, 0.0f), 1).x;
+  float res = arg_0.SampleLevel(arg_1, float2(0.0f, 0.0f), 0).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.msl
index 1883817..06b7ded 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_02be59(depth2d<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float2(), level(1));
+  float res = tint_symbol_2.sample(tint_symbol_3, float2(), level(0));
 }
 
 vertex tint_symbol vertex_main(depth2d<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.spvasm
index 9887bb9..d43aedf 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.spvasm
@@ -47,7 +47,7 @@
     %v2float = OpTypeVector %float 2
          %26 = OpConstantNull %v2float
         %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_float = OpTypePointer Function %float
          %32 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
@@ -57,7 +57,7 @@
          %21 = OpLoad %10 %arg_1
          %22 = OpLoad %7 %arg_0
          %24 = OpSampledImage %23 %22 %21
-         %27 = OpConvertSToF %float %int_1
+         %27 = OpConvertSToF %float %int_0
          %20 = OpImageSampleExplicitLod %v4float %24 %26 Lod %27
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
index 3f6ef7b..a106167 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_02be59() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1);
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
index f1d6031..2c5bbe1 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: i32) -> f32
 fn textureSampleLevel_1b0291() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1);
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.hlsl
index b74acd6..c137247 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_1b0291() {
-  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, 0.0f), 1).x;
+  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, 0.0f), 0).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.msl
index f380dd0..3513f47 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_1b0291(depthcube<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float3(), level(1));
+  float res = tint_symbol_2.sample(tint_symbol_3, float3(), level(0));
 }
 
 vertex tint_symbol vertex_main(depthcube<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.spvasm
index f93c2a5..35cdc08 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.spvasm
@@ -47,7 +47,7 @@
     %v3float = OpTypeVector %float 3
          %26 = OpConstantNull %v3float
         %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_float = OpTypePointer Function %float
          %32 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
@@ -57,7 +57,7 @@
          %21 = OpLoad %10 %arg_1
          %22 = OpLoad %7 %arg_0
          %24 = OpSampledImage %23 %22 %21
-         %27 = OpConvertSToF %float %int_1
+         %27 = OpConvertSToF %float %int_0
          %20 = OpImageSampleExplicitLod %v4float %24 %26 Lod %27
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
index d69b4bb..3699406 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_1b0291() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1);
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
index 2d402f4..7ddc6dc 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32) -> f32
 fn textureSampleLevel_1bf73e() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1);
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.hlsl
index ec16c2a..b9f8cb6 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_1bf73e() {
-  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, float(1)), 1).x;
+  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, float(1)), 0).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.msl
index 8e3c20e..0227e16 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_1bf73e(depth2d_array<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float2(), 1, level(1));
+  float res = tint_symbol_2.sample(tint_symbol_3, float2(), 1, level(0));
 }
 
 vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.spvasm
index 8462388..541d6be 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 49
+; Bound: 50
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -48,8 +48,9 @@
     %float_0 = OpConstant %float 0
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_float = OpTypePointer Function %float
-         %34 = OpTypeFunction %void %v4float
+         %35 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureSampleLevel_1bf73e = OpFunction %void None %15
          %18 = OpLabel
@@ -59,32 +60,32 @@
          %24 = OpSampledImage %23 %22 %21
          %27 = OpConvertSToF %float %int_1
          %30 = OpCompositeConstruct %v3float %float_0 %float_0 %27
-         %31 = OpConvertSToF %float %int_1
+         %31 = OpConvertSToF %float %int_0
          %20 = OpImageSampleExplicitLod %v4float %24 %30 Lod %31
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %34
+%tint_symbol_2 = OpFunction %void None %35
 %tint_symbol = OpFunctionParameter %v4float
-         %37 = OpLabel
+         %38 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %15
-         %39 = OpLabel
+         %40 = OpLabel
                OpStore %tint_pointsize %float_1
-         %41 = OpFunctionCall %void %textureSampleLevel_1bf73e
-         %42 = OpFunctionCall %void %tint_symbol_2 %14
+         %42 = OpFunctionCall %void %textureSampleLevel_1bf73e
+         %43 = OpFunctionCall %void %tint_symbol_2 %14
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %15
-         %44 = OpLabel
-         %45 = OpFunctionCall %void %textureSampleLevel_1bf73e
+         %45 = OpLabel
+         %46 = OpFunctionCall %void %textureSampleLevel_1bf73e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %15
-         %47 = OpLabel
-         %48 = OpFunctionCall %void %textureSampleLevel_1bf73e
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %textureSampleLevel_1bf73e
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
index e2ed36c..dfd0fff 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_1bf73e() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1);
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
index c15d376..5cdb1b7 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32, offset: vec2<i32>) -> f32
 fn textureSampleLevel_47daa4() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.hlsl
index 2584306..f7a0d52 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_47daa4() {
-  float res = arg_0.SampleLevel(arg_1, float2(0.0f, 0.0f), 1, int2(0, 0)).x;
+  float res = arg_0.SampleLevel(arg_1, float2(0.0f, 0.0f), 0, int2(0, 0)).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.msl
index 565f8c0..7c0b3af 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_47daa4(depth2d<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float2(), level(1), int2());
+  float res = tint_symbol_2.sample(tint_symbol_3, float2(), level(0), int2());
 }
 
 vertex tint_symbol vertex_main(depth2d<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
index c42defb..6e8d81b 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.spvasm
@@ -47,7 +47,7 @@
     %v2float = OpTypeVector %float 2
          %26 = OpConstantNull %v2float
         %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
       %v2int = OpTypeVector %int 2
          %31 = OpConstantNull %v2int
 %_ptr_Function_float = OpTypePointer Function %float
@@ -59,7 +59,7 @@
          %21 = OpLoad %10 %arg_1
          %22 = OpLoad %7 %arg_0
          %24 = OpSampledImage %23 %22 %21
-         %27 = OpConvertSToF %float %int_1
+         %27 = OpConvertSToF %float %int_0
          %20 = OpImageSampleExplicitLod %v4float %24 %26 Lod|ConstOffset %27 %31
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
index 4c734d5..2a7967f 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_47daa4() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
index 37df3fa..67bb4b6 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32
 fn textureSampleLevel_ae5e39() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1);
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.hlsl
index f9cabec..e20afdc 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_ae5e39() {
-  float res = arg_0.SampleLevel(arg_1, float4(0.0f, 0.0f, 0.0f, float(1)), 1).x;
+  float res = arg_0.SampleLevel(arg_1, float4(0.0f, 0.0f, 0.0f, float(1)), 0).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.msl
index 955ed3a..a538eed 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_ae5e39(depthcube_array<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float3(), 1, level(1));
+  float res = tint_symbol_2.sample(tint_symbol_3, float3(), 1, level(0));
 }
 
 vertex tint_symbol vertex_main(depthcube_array<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.spvasm
index d895f59..9d7251c 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 48
+; Bound: 49
 ; Schema: 0
                OpCapability Shader
                OpCapability SampledCubeArray
@@ -48,8 +48,9 @@
     %float_0 = OpConstant %float 0
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
 %_ptr_Function_float = OpTypePointer Function %float
-         %33 = OpTypeFunction %void %v4float
+         %34 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureSampleLevel_ae5e39 = OpFunction %void None %15
          %18 = OpLabel
@@ -59,32 +60,32 @@
          %24 = OpSampledImage %23 %22 %21
          %26 = OpConvertSToF %float %int_1
          %29 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %26
-         %30 = OpConvertSToF %float %int_1
+         %30 = OpConvertSToF %float %int_0
          %20 = OpImageSampleExplicitLod %v4float %24 %29 Lod %30
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %33
+%tint_symbol_2 = OpFunction %void None %34
 %tint_symbol = OpFunctionParameter %v4float
-         %36 = OpLabel
+         %37 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %15
-         %38 = OpLabel
+         %39 = OpLabel
                OpStore %tint_pointsize %float_1
-         %40 = OpFunctionCall %void %textureSampleLevel_ae5e39
-         %41 = OpFunctionCall %void %tint_symbol_2 %14
+         %41 = OpFunctionCall %void %textureSampleLevel_ae5e39
+         %42 = OpFunctionCall %void %tint_symbol_2 %14
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %15
-         %43 = OpLabel
-         %44 = OpFunctionCall %void %textureSampleLevel_ae5e39
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %textureSampleLevel_ae5e39
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %15
-         %46 = OpLabel
-         %47 = OpFunctionCall %void %textureSampleLevel_ae5e39
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureSampleLevel_ae5e39
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
index fdb3d64..de37db1 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_ae5e39() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1);
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
index 86b25c9..d1b9b7b 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
@@ -27,7 +27,7 @@
 
 // fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32, offset: vec2<i32>) -> f32
 fn textureSampleLevel_ba93b3() {
-  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1, vec2<i32>());
+  var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.hlsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.hlsl
index 9a7073d..e5a0aee 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
 SamplerState arg_1 : register(s1, space1);
 
 void textureSampleLevel_ba93b3() {
-  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, float(1)), 1, int2(0, 0)).x;
+  float res = arg_0.SampleLevel(arg_1, float3(0.0f, 0.0f, float(1)), 0, int2(0, 0)).x;
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.msl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.msl
index 6c24df6..b10f15c 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.msl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void textureSampleLevel_ba93b3(depth2d_array<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
-  float res = tint_symbol_2.sample(tint_symbol_3, float2(), 1, level(1), int2());
+  float res = tint_symbol_2.sample(tint_symbol_3, float2(), 1, level(0), int2());
 }
 
 vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.spvasm b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.spvasm
index fc2622a..c0c4f79 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 51
+; Bound: 52
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -48,10 +48,11 @@
     %float_0 = OpConstant %float 0
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
+      %int_0 = OpConstant %int 0
       %v2int = OpTypeVector %int 2
-         %33 = OpConstantNull %v2int
+         %34 = OpConstantNull %v2int
 %_ptr_Function_float = OpTypePointer Function %float
-         %36 = OpTypeFunction %void %v4float
+         %37 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
 %textureSampleLevel_ba93b3 = OpFunction %void None %15
          %18 = OpLabel
@@ -61,32 +62,32 @@
          %24 = OpSampledImage %23 %22 %21
          %27 = OpConvertSToF %float %int_1
          %30 = OpCompositeConstruct %v3float %float_0 %float_0 %27
-         %31 = OpConvertSToF %float %int_1
-         %20 = OpImageSampleExplicitLod %v4float %24 %30 Lod|ConstOffset %31 %33
+         %31 = OpConvertSToF %float %int_0
+         %20 = OpImageSampleExplicitLod %v4float %24 %30 Lod|ConstOffset %31 %34
          %19 = OpCompositeExtract %float %20 0
                OpStore %res %19
                OpReturn
                OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %36
+%tint_symbol_2 = OpFunction %void None %37
 %tint_symbol = OpFunctionParameter %v4float
-         %39 = OpLabel
+         %40 = OpLabel
                OpStore %tint_symbol_1 %tint_symbol
                OpReturn
                OpFunctionEnd
 %vertex_main = OpFunction %void None %15
-         %41 = OpLabel
+         %42 = OpLabel
                OpStore %tint_pointsize %float_1
-         %43 = OpFunctionCall %void %textureSampleLevel_ba93b3
-         %44 = OpFunctionCall %void %tint_symbol_2 %14
+         %44 = OpFunctionCall %void %textureSampleLevel_ba93b3
+         %45 = OpFunctionCall %void %tint_symbol_2 %14
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %15
-         %46 = OpLabel
-         %47 = OpFunctionCall %void %textureSampleLevel_ba93b3
+         %47 = OpLabel
+         %48 = OpFunctionCall %void %textureSampleLevel_ba93b3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %15
-         %49 = OpLabel
-         %50 = OpFunctionCall %void %textureSampleLevel_ba93b3
+         %50 = OpLabel
+         %51 = OpFunctionCall %void %textureSampleLevel_ba93b3
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
index bde18e5..927d4c8 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 [[group(1), binding(1)]] var arg_1 : sampler;
 
 fn textureSampleLevel_ba93b3() {
-  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1, vec2<i32>());
+  var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
 [[stage(vertex)]]
diff --git a/test/intrinsics/intrinsics.wgsl.tmpl b/test/intrinsics/intrinsics.wgsl.tmpl
index fd3089c..1751b6d 100644
--- a/test/intrinsics/intrinsics.wgsl.tmpl
+++ b/test/intrinsics/intrinsics.wgsl.tmpl
@@ -115,7 +115,7 @@
 {{- /*indent*/}}  var arg_{{$i}}: {{template "Type" index $p.Type.TemplateArguments 1}};
 {{          $args.Put $i (printf "&arg_%v" $i) -}}
 {{-       else -}}
-{{-         $args.Put $i (Eval "ValueOf" $p.Type) -}}
+{{-         $args.Put $i (Eval "ArgumentValue" $p) -}}
 {{-       end -}}
 {{-     end -}}
 {{-   end -}}
@@ -225,14 +225,21 @@
 
 
 {{- /* ------------------------------------------------------------------ */ -}}
-{{-                              define "ValueOf"                            -}}
-{{- /* Returns a value of the given Fully Qualified Name argument         */ -}}
+{{-                          define "ArgumentValue"                          -}}
+{{- /* Returns a value that can be used for the parameter argument        */ -}}
 {{- /* ------------------------------------------------------------------ */ -}}
-{{-   if      eq .Target.Name "i32" -}}1
-{{-   else if eq .Target.Name "u32" -}}1u
-{{-   else if eq .Target.Name "f32" -}}1.0
-{{-   else                          -}}{{template "Type" .}}()
-{{-   end                           -}}
+{{-   $ty := .Type -}}
+{{-   if      eq $ty.Target.Name "i32" -}}
+{{- /* If the parameter has the name 'level', then use '0' as the value.  */ -}}
+{{- /* Some texture arguments require the level parameter to be 0, and    */ -}}
+{{- /* constraint is not described in the definition file.                */ -}}
+{{-     if   eq .Name "level"            -}}0
+{{-     else                             -}}1
+{{-     end                              -}}
+{{-   else if eq $ty.Target.Name "u32" -}}1u
+{{-   else if eq $ty.Target.Name "f32" -}}1.0
+{{-   else                             -}}{{template "Type" $ty}}()
+{{-   end                              -}}
 {{- end -}}