tint/intrinsics: Texture queries now return unsigned integer / vectors

To match the spec.

Also add a bunch of missing texture test cases to
src/tint/ast/builtin_texture_helper_test.cc. Fix all the tests that were
broken because these were not being exercised.

Fixed: tint:1526
Change-Id: I207b51d307bbdc054b595e0e0e0fd3330607e171
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106681
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl
index 442d50b..ddc52ad 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba16uint, write>) -> i32
-fn textureNumLayers_9700fb() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16uint, write>) -> u32
+fn textureNumLayers_014a3b() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.dxc.hlsl
index 6b49235..470f2ac 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_014a3b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.fxc.hlsl
index 6b49235..470f2ac 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_014a3b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_014a3b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.glsl
index 24b2d5d..c1c9781 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_9700fb() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_014a3b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_9700fb() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_014a3b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_9700fb() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_014a3b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.msl
index 1b296c7..4a03eda 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_9700fb(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_014a3b(texture2d_array<uint, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_9700fb(tint_symbol_2);
+  textureNumLayers_014a3b(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_9700fb(tint_symbol_4);
+  textureNumLayers_014a3b(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_9700fb(tint_symbol_5);
+  textureNumLayers_014a3b(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.spvasm
similarity index 79%
copy from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.spvasm
index 953a4a4..2acde0b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_22e53b "textureNumLayers_22e53b"
+               OpName %textureNumLayers_014a3b "textureNumLayers_014a3b"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,29 +33,29 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_22e53b = OpFunction %void None %13
+%textureNumLayers_014a3b = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_22e53b
+         %27 = OpFunctionCall %void %textureNumLayers_014a3b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_22e53b
+         %34 = OpFunctionCall %void %textureNumLayers_014a3b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_22e53b
+         %37 = OpFunctionCall %void %textureNumLayers_014a3b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.wgsl
index d260e36..9c87b00 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
-fn textureNumLayers_9700fb() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_014a3b() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_9700fb();
+  textureNumLayers_014a3b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.fxc.hlsl
deleted file mode 100644
index c54de32..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-Texture2DArray<float4> arg_0 : register(t0, space1);
-
-void textureNumLayers_024820() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_024820();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_024820();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_024820();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.glsl
deleted file mode 100644
index 9e3639f..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-#version 310 es
-
-uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_024820() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-vec4 vertex_main() {
-  textureNumLayers_024820();
-  return vec4(0.0f);
-}
-
-void main() {
-  gl_PointSize = 1.0;
-  vec4 inner_result = vertex_main();
-  gl_Position = inner_result;
-  gl_Position.y = -(gl_Position.y);
-  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
-  return;
-}
-#version 310 es
-precision mediump float;
-
-uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_024820() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-void fragment_main() {
-  textureNumLayers_024820();
-}
-
-void main() {
-  fragment_main();
-  return;
-}
-#version 310 es
-
-uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_024820() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-void compute_main() {
-  textureNumLayers_024820();
-}
-
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  compute_main();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.spvasm
deleted file mode 100644
index 5c65a19..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_024820 "textureNumLayers_024820"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-         %11 = OpTypeImage %float 2D 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_024820 = OpFunction %void None %12
-         %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %16 = OpCompositeExtract %int %18 2
-               OpStore %res %16
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_024820
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %12
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %12
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_024820
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %12
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_024820
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl
deleted file mode 100644
index eaa9cc7..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
-
-fn textureNumLayers_024820() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_024820();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_024820();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_024820();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.fxc.hlsl
deleted file mode 100644
index ec08652..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-TextureCubeArray<uint4> arg_0 : register(t0, space1);
-
-void textureNumLayers_053df7() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_053df7();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_053df7();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_053df7();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl
deleted file mode 100644
index 06592ac..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
-
-fn textureNumLayers_053df7() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_053df7();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_053df7();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_053df7();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 0f9f61a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_058cc3() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_058cc3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_058cc3();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_058cc3();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 0f9f61a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_058cc3() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_058cc3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_058cc3();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_058cc3();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.msl
deleted file mode 100644
index f89aa00..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_058cc3(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_058cc3(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<int, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_058cc3(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_058cc3(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl
index eafec6d..4ffee75 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rg32uint, write>) -> i32
-fn textureNumLayers_fcec98() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32uint, write>) -> u32
+fn textureNumLayers_071ebc() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.dxc.hlsl
index 6b49235..11a36cc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_071ebc() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.fxc.hlsl
index 6b49235..11a36cc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_071ebc() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_071ebc();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
index bfaa76f..ca8029c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_fcec98() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_071ebc() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_fcec98() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_071ebc() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_fcec98() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_071ebc() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.msl
index 2fb0509..f9657e8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_ff5e89(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_071ebc(texture2d_array<uint, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_ff5e89(tint_symbol_2);
+  textureNumLayers_071ebc(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_4);
+  textureNumLayers_071ebc(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_5);
+  textureNumLayers_071ebc(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.spvasm
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.spvasm
index 4737d7e..7a70e26 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_058cc3 "textureNumLayers_058cc3"
+               OpName %textureNumLayers_071ebc "textureNumLayers_071ebc"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -34,29 +34,29 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_058cc3 = OpFunction %void None %13
+%textureNumLayers_071ebc = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_058cc3
+         %27 = OpFunctionCall %void %textureNumLayers_071ebc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_058cc3
+         %34 = OpFunctionCall %void %textureNumLayers_071ebc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_058cc3
+         %37 = OpFunctionCall %void %textureNumLayers_071ebc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.wgsl
index 1c1e179..61626de 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
-fn textureNumLayers_fcec98() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_071ebc() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_fcec98();
+  textureNumLayers_071ebc();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.fxc.hlsl
deleted file mode 100644
index c52cd47..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_09d05d() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_09d05d();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_09d05d();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.msl
deleted file mode 100644
index 6666c52..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_09d05d(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_09d05d(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<float, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_09d05d(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_09d05d(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/024820.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl
index 2abd10d..bba0167 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
-// fn textureNumLayers(texture: texture_2d_array<f32>) -> i32
-fn textureNumLayers_024820() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_2d_array<f32>) -> u32
+fn textureNumLayers_0ec222() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.dxc.hlsl
index c54de32..8ff2543 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 
-void textureNumLayers_024820() {
+void textureNumLayers_0ec222() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.fxc.hlsl
index c54de32..8ff2543 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 
-void textureNumLayers_024820() {
+void textureNumLayers_0ec222() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_024820();
+  textureNumLayers_0ec222();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.glsl
similarity index 67%
copy from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl
copy to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.glsl
index c622a34..37ecbb1 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_0ec222() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_0ec222();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_0ec222() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_0ec222();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_0ec222() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_0ec222();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.msl
index 62c3cda..63e8634 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_024820(texture2d_array<float, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_0ec222(texture2d_array<float, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::sample> tint_symbol_2) {
-  textureNumLayers_024820(tint_symbol_2);
+  textureNumLayers_0ec222(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_024820(tint_symbol_4);
+  textureNumLayers_0ec222(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_024820(tint_symbol_5);
+  textureNumLayers_0ec222(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.spvasm
similarity index 72%
copy from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.spvasm
index 109f2d0..b6d7c2b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_87953e "textureNumLayers_87953e"
+               OpName %textureNumLayers_0ec222 "textureNumLayers_0ec222"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -32,47 +32,47 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown
+         %11 = OpTypeImage %float 2D 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
-         %13 = OpTypeFunction %void
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_87953e = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
+%textureNumLayers_0ec222 = OpFunction %void None %12
+         %15 = OpLabel
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %16 = OpCompositeExtract %uint %18 2
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_87953e
+         %29 = OpFunctionCall %void %textureNumLayers_0ec222
                OpReturnValue %5
                OpFunctionEnd
-%vertex_main = OpFunction %void None %13
+%vertex_main = OpFunction %void None %12
          %31 = OpLabel
          %32 = OpFunctionCall %v4float %vertex_main_inner
                OpStore %value %32
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
-%fragment_main = OpFunction %void None %13
+%fragment_main = OpFunction %void None %12
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_87953e
+         %36 = OpFunctionCall %void %textureNumLayers_0ec222
                OpReturn
                OpFunctionEnd
-%compute_main = OpFunction %void None %13
+%compute_main = OpFunction %void None %12
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_87953e
+         %39 = OpFunctionCall %void %textureNumLayers_0ec222
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.wgsl
new file mode 100644
index 0000000..3f18e09
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
+
+fn textureNumLayers_0ec222() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_0ec222();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_0ec222();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_0ec222();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 4d9ac8a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_13b4ce() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_13b4ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_13b4ce();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_13b4ce();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 4d9ac8a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_13b4ce() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_13b4ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_13b4ce();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_13b4ce();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.msl
deleted file mode 100644
index bb33ae6..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_13b4ce(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_13b4ce(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<int, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_13b4ce(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_13b4ce(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.spvasm
deleted file mode 100644
index 651790d..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 38
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_13b4ce "textureNumLayers_13b4ce"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
-         %24 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_13b4ce = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_13b4ce
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_13b4ce
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_13b4ce
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 8611a52..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_22e53b() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_22e53b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_22e53b();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_22e53b();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 8611a52..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_22e53b() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_22e53b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_22e53b();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_22e53b();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.msl
deleted file mode 100644
index 5c5fa33..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_22e53b(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_22e53b(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<int, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_22e53b(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_22e53b(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl
index 91ac33b..376f70d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<r32float, write>) -> i32
-fn textureNumLayers_d5b228() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<r32float, write>) -> u32
+fn textureNumLayers_3465ec() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.dxc.hlsl
index c52cd47..b8ba0b2 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_3465ec() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.fxc.hlsl
index c52cd47..b8ba0b2 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_3465ec() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_3465ec();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.glsl
index 0daa0a3..0e7b8e8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_d5b228() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3465ec() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_d5b228() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3465ec() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_d5b228() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3465ec() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.msl
similarity index 75%
copy from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.msl
index 97a5498..356deb4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_3465ec(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_3465ec(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_3465ec(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_3465ec(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.spvasm
index 08a45ee..fae4592 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_d5b228 "textureNumLayers_d5b228"
+               OpName %textureNumLayers_3465ec "textureNumLayers_3465ec"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,24 +38,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_d5b228 = OpFunction %void None %12
+%textureNumLayers_3465ec = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_d5b228
+         %27 = OpFunctionCall %void %textureNumLayers_3465ec
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_d5b228
+         %34 = OpFunctionCall %void %textureNumLayers_3465ec
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_d5b228
+         %37 = OpFunctionCall %void %textureNumLayers_3465ec
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.wgsl
index 9cf3683..409c7e8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
-fn textureNumLayers_d5b228() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_3465ec() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_d5b228();
+  textureNumLayers_3465ec();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl
index 538aee4..ba4649d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_cube_array<f32>;
 
-// fn textureNumLayers(texture: texture_cube_array<f32>) -> i32
-fn textureNumLayers_5d59cd() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_cube_array<f32>) -> u32
+fn textureNumLayers_34cefa() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.dxc.hlsl
index 063ac3b..aafeb23 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 
-void textureNumLayers_5d59cd() {
+void textureNumLayers_34cefa() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.fxc.hlsl
index 063ac3b..aafeb23 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 
-void textureNumLayers_5d59cd() {
+void textureNumLayers_34cefa() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_5d59cd();
+  textureNumLayers_34cefa();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
index 40debcc..6cf0e2a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_34cefa() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_34cefa();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_34cefa() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_34cefa();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_34cefa() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_34cefa();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.msl
index aa7890e..4939f4e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_5d59cd(texturecube_array<float, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_34cefa(texturecube_array<float, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texturecube_array<float, access::sample> tint_symbol_2) {
-  textureNumLayers_5d59cd(tint_symbol_2);
+  textureNumLayers_34cefa(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texturecube_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_5d59cd(tint_symbol_4);
+  textureNumLayers_34cefa(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texturecube_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_5d59cd(tint_symbol_5);
+  textureNumLayers_34cefa(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.spvasm
similarity index 73%
copy from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.spvasm
index a8336ca..56da867 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_053df7 "textureNumLayers_053df7"
+               OpName %textureNumLayers_34cefa "textureNumLayers_34cefa"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,47 +33,47 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint Cube 0 1 0 1 Unknown
+         %11 = OpTypeImage %float Cube 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
-         %13 = OpTypeFunction %void
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_053df7 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
+%textureNumLayers_34cefa = OpFunction %void None %12
+         %15 = OpLabel
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %16 = OpCompositeExtract %uint %18 2
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_053df7
+         %29 = OpFunctionCall %void %textureNumLayers_34cefa
                OpReturnValue %5
                OpFunctionEnd
-%vertex_main = OpFunction %void None %13
+%vertex_main = OpFunction %void None %12
          %31 = OpLabel
          %32 = OpFunctionCall %v4float %vertex_main_inner
                OpStore %value %32
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
-%fragment_main = OpFunction %void None %13
+%fragment_main = OpFunction %void None %12
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_053df7
+         %36 = OpFunctionCall %void %textureNumLayers_34cefa
                OpReturn
                OpFunctionEnd
-%compute_main = OpFunction %void None %13
+%compute_main = OpFunction %void None %12
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_053df7
+         %39 = OpFunctionCall %void %textureNumLayers_34cefa
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.wgsl
new file mode 100644
index 0000000..9f82af9
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
+
+fn textureNumLayers_34cefa() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_34cefa();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_34cefa();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_34cefa();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl
index 205475f..881a6d3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rg32sint, write>) -> i32
-fn textureNumLayers_058cc3() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32sint, write>) -> u32
+fn textureNumLayers_3580ab() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.dxc.hlsl
index 4f341b1..8ff6e3c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_3580ab() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.fxc.hlsl
index 4f341b1..8ff6e3c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_3580ab() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_3580ab();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
index 0730d3a..1c54488 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_058cc3() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3580ab() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_058cc3() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3580ab() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_058cc3() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_3580ab() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.msl
index d415304..e6235c5 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_f33005(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_3580ab(texture2d_array<int, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_f33005(tint_symbol_2);
+  textureNumLayers_3580ab(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_4);
+  textureNumLayers_3580ab(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_5);
+  textureNumLayers_3580ab(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.spvasm
index b33d57b..2e0c867 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_fcec98 "textureNumLayers_fcec98"
+               OpName %textureNumLayers_3580ab "textureNumLayers_3580ab"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -34,30 +34,30 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rg32ui
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rg32i
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %24 = OpConstantNull %uint
          %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_fcec98 = OpFunction %void None %13
+%textureNumLayers_3580ab = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_uint Function %24
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySize %v3uint %21
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %25
          %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_fcec98
+         %28 = OpFunctionCall %void %textureNumLayers_3580ab
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -69,11 +69,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_fcec98
+         %35 = OpFunctionCall %void %textureNumLayers_3580ab
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_fcec98
+         %38 = OpFunctionCall %void %textureNumLayers_3580ab
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.wgsl
index a39583b..6434d12 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
-fn textureNumLayers_058cc3() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_3580ab() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_058cc3();
+  textureNumLayers_3580ab();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl
index 06508d7..d110c44 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
-// fn textureNumLayers(texture: texture_depth_cube_array) -> i32
-fn textureNumLayers_778bd1() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_depth_cube_array) -> u32
+fn textureNumLayers_48ef47() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.dxc.hlsl
index 198c36b..16898b3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray arg_0 : register(t0, space1);
 
-void textureNumLayers_778bd1() {
+void textureNumLayers_48ef47() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.fxc.hlsl
index 198c36b..16898b3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray arg_0 : register(t0, space1);
 
-void textureNumLayers_778bd1() {
+void textureNumLayers_48ef47() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl
copy to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
index 40debcc..406b57c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_48ef47() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_48ef47() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_778bd1() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_48ef47() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_778bd1();
+  textureNumLayers_48ef47();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.msl
index fc13fba..5fd51cb 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_778bd1(depthcube_array<float, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_48ef47(depthcube_array<float, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(depthcube_array<float, access::sample> tint_symbol_2) {
-  textureNumLayers_778bd1(tint_symbol_2);
+  textureNumLayers_48ef47(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(depthcube_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_778bd1(tint_symbol_4);
+  textureNumLayers_48ef47(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(depthcube_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_778bd1(tint_symbol_5);
+  textureNumLayers_48ef47(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.spvasm
similarity index 73%
copy from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.spvasm
index a8336ca..9e2bf03 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_053df7 "textureNumLayers_053df7"
+               OpName %textureNumLayers_48ef47 "textureNumLayers_48ef47"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,47 +33,47 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint Cube 0 1 0 1 Unknown
+         %11 = OpTypeImage %float Cube 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
-         %13 = OpTypeFunction %void
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_053df7 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
+%textureNumLayers_48ef47 = OpFunction %void None %12
+         %15 = OpLabel
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %16 = OpCompositeExtract %uint %18 2
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_053df7
+         %29 = OpFunctionCall %void %textureNumLayers_48ef47
                OpReturnValue %5
                OpFunctionEnd
-%vertex_main = OpFunction %void None %13
+%vertex_main = OpFunction %void None %12
          %31 = OpLabel
          %32 = OpFunctionCall %v4float %vertex_main_inner
                OpStore %value %32
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
-%fragment_main = OpFunction %void None %13
+%fragment_main = OpFunction %void None %12
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_053df7
+         %36 = OpFunctionCall %void %textureNumLayers_48ef47
                OpReturn
                OpFunctionEnd
-%compute_main = OpFunction %void None %13
+%compute_main = OpFunction %void None %12
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_053df7
+         %39 = OpFunctionCall %void %textureNumLayers_48ef47
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.wgsl
new file mode 100644
index 0000000..c39479b
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
+
+fn textureNumLayers_48ef47() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_48ef47();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_48ef47();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_48ef47();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl
index 5de9836..5b17e29 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba8snorm, write>) -> i32
-fn textureNumLayers_e31be1() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8snorm, write>) -> u32
+fn textureNumLayers_4c4333() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.dxc.hlsl
index c52cd47..f4f07a9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_4c4333() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.fxc.hlsl
index c52cd47..f4f07a9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_4c4333() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_4c4333();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.glsl
similarity index 71%
rename from test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.glsl
index e5e4797..0fef0c7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_e31be1() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_4c4333() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_e31be1() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_4c4333() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_e31be1() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_4c4333() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.msl
similarity index 75%
copy from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.msl
index 97a5498..e7e878d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_4c4333(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_4c4333(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_4c4333(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_4c4333(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.spvasm
index 192aa63..942e442 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_e31be1 "textureNumLayers_e31be1"
+               OpName %textureNumLayers_4c4333 "textureNumLayers_4c4333"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,24 +38,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_e31be1 = OpFunction %void None %12
+%textureNumLayers_4c4333 = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_e31be1
+         %27 = OpFunctionCall %void %textureNumLayers_4c4333
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_e31be1
+         %34 = OpFunctionCall %void %textureNumLayers_4c4333
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_e31be1
+         %37 = OpFunctionCall %void %textureNumLayers_4c4333
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.wgsl
index c930384..3217266 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
-fn textureNumLayers_e31be1() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_4c4333() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_e31be1();
+  textureNumLayers_4c4333();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 59664cc..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_562013() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_562013();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_562013();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_562013();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 59664cc..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_562013() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_562013();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_562013();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_562013();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl
index 97c27df..6d37cbd 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<r32sint, write>) -> i32
-fn textureNumLayers_22e53b() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<r32sint, write>) -> u32
+fn textureNumLayers_59eb57() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.dxc.hlsl
index 4f341b1..6ac9329 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_59eb57() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.fxc.hlsl
index 4f341b1..6ac9329 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_59eb57() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_59eb57();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.glsl
index 3902bb3..5d27d74 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_22e53b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_59eb57() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_22e53b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_59eb57() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_22e53b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_59eb57() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.msl
index d415304..bc42953 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_f33005(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_59eb57(texture2d_array<int, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_f33005(tint_symbol_2);
+  textureNumLayers_59eb57(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_4);
+  textureNumLayers_59eb57(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_5);
+  textureNumLayers_59eb57(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.spvasm
similarity index 80%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.spvasm
index ae6e277..8fdfad3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_ff5e89 "textureNumLayers_ff5e89"
+               OpName %textureNumLayers_59eb57 "textureNumLayers_59eb57"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,30 +33,30 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %24 = OpConstantNull %uint
          %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_ff5e89 = OpFunction %void None %13
+%textureNumLayers_59eb57 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_uint Function %24
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySize %v3uint %21
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %25
          %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %28 = OpFunctionCall %void %textureNumLayers_59eb57
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %35 = OpFunctionCall %void %textureNumLayers_59eb57
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %38 = OpFunctionCall %void %textureNumLayers_59eb57
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.wgsl
similarity index 60%
rename from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.wgsl
index 2ac3057..eb6df73 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
-fn textureNumLayers_22e53b() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_59eb57() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_22e53b();
+  textureNumLayers_59eb57();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 063ac3b..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-TextureCubeArray<float4> arg_0 : register(t0, space1);
-
-void textureNumLayers_5d59cd() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_5d59cd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_5d59cd();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_5d59cd();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.glsl
deleted file mode 100644
index c469183..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.glsl
+++ /dev/null
@@ -1,75 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_5d59cd() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-vec4 vertex_main() {
-  textureNumLayers_5d59cd();
-  return vec4(0.0f);
-}
-
-void main() {
-  gl_PointSize = 1.0;
-  vec4 inner_result = vertex_main();
-  gl_Position = inner_result;
-  gl_Position.y = -(gl_Position.y);
-  gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision mediump float;
-
-uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_5d59cd() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-void fragment_main() {
-  textureNumLayers_5d59cd();
-}
-
-void main() {
-  fragment_main();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-
-uniform highp samplerCubeArray arg_0_1;
-void textureNumLayers_5d59cd() {
-  int res = textureSize(arg_0_1, 0).z;
-}
-
-void compute_main() {
-  textureNumLayers_5d59cd();
-}
-
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  compute_main();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.spvasm
deleted file mode 100644
index e7f1f9e..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability SampledCubeArray
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_5d59cd "textureNumLayers_5d59cd"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-         %11 = OpTypeImage %float Cube 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_5d59cd = OpFunction %void None %12
-         %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %16 = OpCompositeExtract %int %18 2
-               OpStore %res %16
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_5d59cd
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %12
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %12
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_5d59cd
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %12
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_5d59cd
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl
deleted file mode 100644
index 28bcd65..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
-
-fn textureNumLayers_5d59cd() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_5d59cd();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_5d59cd();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_5d59cd();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl
index 1c14665..ef61c18 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba8uint, write>) -> i32
-fn textureNumLayers_ff5e89() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8uint, write>) -> u32
+fn textureNumLayers_61bd23() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.dxc.hlsl
index 6b49235..89f3e18 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_61bd23() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.fxc.hlsl
index 6b49235..89f3e18 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_61bd23() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_61bd23();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.glsl
index 76ca5cc..c709957 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ff5e89() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_61bd23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ff5e89() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_61bd23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ff5e89() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_61bd23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.msl
similarity index 74%
rename from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.msl
index 2fb0509..cee795a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_ff5e89(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_61bd23(texture2d_array<uint, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_ff5e89(tint_symbol_2);
+  textureNumLayers_61bd23(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_4);
+  textureNumLayers_61bd23(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_5);
+  textureNumLayers_61bd23(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.spvasm
similarity index 79%
rename from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.spvasm
index 953a4a4..ca56085 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_22e53b "textureNumLayers_22e53b"
+               OpName %textureNumLayers_61bd23 "textureNumLayers_61bd23"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,29 +33,29 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_22e53b = OpFunction %void None %13
+%textureNumLayers_61bd23 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_22e53b
+         %27 = OpFunctionCall %void %textureNumLayers_61bd23
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_22e53b
+         %34 = OpFunctionCall %void %textureNumLayers_61bd23
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_22e53b
+         %37 = OpFunctionCall %void %textureNumLayers_61bd23
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.wgsl
index e7b51b4..9a53a59 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
-fn textureNumLayers_ff5e89() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_61bd23() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_ff5e89();
+  textureNumLayers_61bd23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.dxc.hlsl
deleted file mode 100644
index cefd820..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_68a65b() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_68a65b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_68a65b();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_68a65b();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.fxc.hlsl
deleted file mode 100644
index cefd820..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_68a65b() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_68a65b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_68a65b();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_68a65b();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.msl
deleted file mode 100644
index 906ffc5..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_68a65b(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_68a65b(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<float, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_68a65b(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_68a65b(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl
index 38bb36e..31e32f9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_cube_array<i32>;
 
-// fn textureNumLayers(texture: texture_cube_array<i32>) -> i32
-fn textureNumLayers_85f980() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_cube_array<i32>) -> u32
+fn textureNumLayers_6b4321() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.dxc.hlsl
index bd6cdc4..e6ebad8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 
-void textureNumLayers_85f980() {
+void textureNumLayers_6b4321() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.fxc.hlsl
index bd6cdc4..e6ebad8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 
-void textureNumLayers_85f980() {
+void textureNumLayers_6b4321() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
index 529bfb3..9fd427f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
-void textureNumLayers_85f980() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_6b4321() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
-void textureNumLayers_85f980() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_6b4321() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
-void textureNumLayers_85f980() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_6b4321() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_85f980();
+  textureNumLayers_6b4321();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.msl
index e1b10eb..ee31186 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_85f980(texturecube_array<int, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_6b4321(texturecube_array<int, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texturecube_array<int, access::sample> tint_symbol_2) {
-  textureNumLayers_85f980(tint_symbol_2);
+  textureNumLayers_6b4321(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texturecube_array<int, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_85f980(tint_symbol_4);
+  textureNumLayers_6b4321(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texturecube_array<int, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_85f980(tint_symbol_5);
+  textureNumLayers_6b4321(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.spvasm
similarity index 80%
copy from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.spvasm
index a8336ca..3504ed0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_053df7 "textureNumLayers_053df7"
+               OpName %textureNumLayers_6b4321 "textureNumLayers_6b4321"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,31 +33,31 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint Cube 0 1 0 1 Unknown
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int Cube 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_053df7 = OpFunction %void None %13
+%textureNumLayers_6b4321 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
+        %res = OpVariable %_ptr_Function_uint Function %25
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySizeLod %v3uint %21 %int_0
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_053df7
+         %29 = OpFunctionCall %void %textureNumLayers_6b4321
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -69,11 +69,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_053df7
+         %36 = OpFunctionCall %void %textureNumLayers_6b4321
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_053df7
+         %39 = OpFunctionCall %void %textureNumLayers_6b4321
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.wgsl
new file mode 100644
index 0000000..952e831
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
+
+fn textureNumLayers_6b4321() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_6b4321();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_6b4321();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_6b4321();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 198c36b..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-TextureCubeArray arg_0 : register(t0, space1);
-
-void textureNumLayers_778bd1() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_778bd1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_778bd1();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_778bd1();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.spvasm
deleted file mode 100644
index b1fd36b..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability SampledCubeArray
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_778bd1 "textureNumLayers_778bd1"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-         %11 = OpTypeImage %float Cube 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_778bd1 = OpFunction %void None %12
-         %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %16 = OpCompositeExtract %int %18 2
-               OpStore %res %16
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_778bd1
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %12
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %12
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_778bd1
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %12
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_778bd1
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl
deleted file mode 100644
index 8274e1e..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
-
-fn textureNumLayers_778bd1() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_778bd1();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_778bd1();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_778bd1();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl
index 533a86f..a5ece22 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
-// fn textureNumLayers(texture: texture_2d_array<i32>) -> i32
-fn textureNumLayers_893e7c() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_2d_array<i32>) -> u32
+fn textureNumLayers_77be7b() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.dxc.hlsl
index 0991385..baad1e8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 
-void textureNumLayers_893e7c() {
+void textureNumLayers_77be7b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.fxc.hlsl
index 0991385..baad1e8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 
-void textureNumLayers_893e7c() {
+void textureNumLayers_77be7b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.glsl
similarity index 67%
rename from test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.glsl
index e2d0eb6..6af1d4b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
-void textureNumLayers_893e7c() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_77be7b() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
-void textureNumLayers_893e7c() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_77be7b() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
-void textureNumLayers_893e7c() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_77be7b() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_893e7c();
+  textureNumLayers_77be7b();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.msl
similarity index 74%
rename from test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.msl
index 66d329d..bb749fd 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_893e7c(texture2d_array<int, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_77be7b(texture2d_array<int, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::sample> tint_symbol_2) {
-  textureNumLayers_893e7c(tint_symbol_2);
+  textureNumLayers_77be7b(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_893e7c(tint_symbol_4);
+  textureNumLayers_77be7b(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_893e7c(tint_symbol_5);
+  textureNumLayers_77be7b(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.spvasm
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.spvasm
index 109f2d0..c5d95de 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_87953e "textureNumLayers_87953e"
+               OpName %textureNumLayers_77be7b "textureNumLayers_77be7b"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -32,31 +32,31 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_87953e = OpFunction %void None %13
+%textureNumLayers_77be7b = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
+        %res = OpVariable %_ptr_Function_uint Function %25
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySizeLod %v3uint %21 %int_0
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_87953e
+         %29 = OpFunctionCall %void %textureNumLayers_77be7b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_87953e
+         %36 = OpFunctionCall %void %textureNumLayers_77be7b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_87953e
+         %39 = OpFunctionCall %void %textureNumLayers_77be7b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.wgsl
new file mode 100644
index 0000000..e61657d
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
+
+fn textureNumLayers_77be7b() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_77be7b();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_77be7b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_77be7b();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.dxc.hlsl
deleted file mode 100644
index edd423a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_7f1937() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_7f1937();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_7f1937();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_7f1937();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.fxc.hlsl
deleted file mode 100644
index edd423a..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_7f1937() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_7f1937();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_7f1937();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_7f1937();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.msl
deleted file mode 100644
index 05239da..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_7f1937(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_7f1937(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<float, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_7f1937(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_7f1937(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl
index cf29588..9184fe8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rg32float, write>) -> i32
-fn textureNumLayers_7f1937() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rg32float, write>) -> u32
+fn textureNumLayers_7f28cf() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.dxc.hlsl
index c52cd47..ffe3a19 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_7f28cf() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.fxc.hlsl
index c52cd47..ffe3a19 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_7f28cf() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_7f28cf();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
index f6fdbf0..6b98fb4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_7f1937() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_7f28cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_7f1937() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_7f28cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_7f1937() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_7f28cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.msl
similarity index 75%
copy from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.msl
index 97a5498..dfa6427 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_7f28cf(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_7f28cf(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_7f28cf(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_7f28cf(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.spvasm
index 59d909d..fae74c5 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_7f1937 "textureNumLayers_7f1937"
+               OpName %textureNumLayers_7f28cf "textureNumLayers_7f28cf"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -39,24 +39,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_7f1937 = OpFunction %void None %12
+%textureNumLayers_7f28cf = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_7f1937
+         %27 = OpFunctionCall %void %textureNumLayers_7f28cf
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_7f1937
+         %34 = OpFunctionCall %void %textureNumLayers_7f28cf
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_7f1937
+         %37 = OpFunctionCall %void %textureNumLayers_7f28cf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.wgsl
index 27ba412..9315c01 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
-fn textureNumLayers_7f1937() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_7f28cf() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_7f1937();
+  textureNumLayers_7f28cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.fxc.hlsl
deleted file mode 100644
index bd6cdc4..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-TextureCubeArray<int4> arg_0 : register(t0, space1);
-
-void textureNumLayers_85f980() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_85f980();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_85f980();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_85f980();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.spvasm
deleted file mode 100644
index 4484cad..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability SampledCubeArray
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_85f980 "textureNumLayers_85f980"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int Cube 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_85f980 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %17 = OpCompositeExtract %int %18 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_85f980
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_85f980
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_85f980
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl
deleted file mode 100644
index 5206f51..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
-
-fn textureNumLayers_85f980() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_85f980();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_85f980();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_85f980();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl
index 634b16d..95d81a8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba8sint, write>) -> i32
-fn textureNumLayers_a216d2() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8sint, write>) -> u32
+fn textureNumLayers_878dea() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.dxc.hlsl
index 4f341b1..60c70b1 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_878dea() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.fxc.hlsl
index 4f341b1..60c70b1 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_878dea() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_878dea();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.glsl
index a6deec3..e29de3e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_a216d2() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_878dea() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_a216d2() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_878dea() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_a216d2() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_878dea() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.msl
index d415304..7b10509 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_f33005(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_878dea(texture2d_array<int, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_f33005(tint_symbol_2);
+  textureNumLayers_878dea(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_4);
+  textureNumLayers_878dea(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_5);
+  textureNumLayers_878dea(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.spvasm
similarity index 80%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.spvasm
index ae6e277..8426d4a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_ff5e89 "textureNumLayers_ff5e89"
+               OpName %textureNumLayers_878dea "textureNumLayers_878dea"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,30 +33,30 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %24 = OpConstantNull %uint
          %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_ff5e89 = OpFunction %void None %13
+%textureNumLayers_878dea = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_uint Function %24
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySize %v3uint %21
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %25
          %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %28 = OpFunctionCall %void %textureNumLayers_878dea
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %35 = OpFunctionCall %void %textureNumLayers_878dea
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %38 = OpFunctionCall %void %textureNumLayers_878dea
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.wgsl
index ef09e0b..c164c88 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
-fn textureNumLayers_a216d2() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_878dea() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_a216d2();
+  textureNumLayers_878dea();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 5c563c4..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-Texture2DArray<uint4> arg_0 : register(t0, space1);
-
-void textureNumLayers_87953e() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_87953e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_87953e();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_87953e();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl
deleted file mode 100644
index 55d0f9d..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
-
-fn textureNumLayers_87953e() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_87953e();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_87953e();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_87953e();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl
index f47b3a2..4939ab3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<r32uint, write>) -> i32
-fn textureNumLayers_ee942f() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<r32uint, write>) -> u32
+fn textureNumLayers_87faad() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.dxc.hlsl
index 6b49235..04ccdcf 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_87faad() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.fxc.hlsl
index 6b49235..04ccdcf 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_87faad() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.glsl
index f5996d3..00057ca 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ee942f() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_87faad() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ee942f() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_87faad() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_ee942f() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_87faad() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.msl
index 2fb0509..acf16b3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_ff5e89(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_87faad(texture2d_array<uint, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_ff5e89(tint_symbol_2);
+  textureNumLayers_87faad(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_4);
+  textureNumLayers_87faad(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_5);
+  textureNumLayers_87faad(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.spvasm
similarity index 79%
copy from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.spvasm
index 953a4a4..4a12d33 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_22e53b "textureNumLayers_22e53b"
+               OpName %textureNumLayers_87faad "textureNumLayers_87faad"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,29 +33,29 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_22e53b = OpFunction %void None %13
+%textureNumLayers_87faad = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_22e53b
+         %27 = OpFunctionCall %void %textureNumLayers_87faad
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_22e53b
+         %34 = OpFunctionCall %void %textureNumLayers_87faad
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_22e53b
+         %37 = OpFunctionCall %void %textureNumLayers_87faad
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.wgsl
similarity index 60%
rename from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.wgsl
index c6d26dd..fcd265c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
-fn textureNumLayers_ee942f() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_87faad() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_87faad();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 0991385..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-Texture2DArray<int4> arg_0 : register(t0, space1);
-
-void textureNumLayers_893e7c() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_893e7c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_893e7c();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_893e7c();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.spvasm
deleted file mode 100644
index 22bfd83..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_893e7c "textureNumLayers_893e7c"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_893e7c = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %17 = OpCompositeExtract %int %18 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_893e7c
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_893e7c
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_893e7c
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl
deleted file mode 100644
index 1ef4610..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
-
-fn textureNumLayers_893e7c() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_893e7c();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_893e7c();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_893e7c();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl
index b982487..b3f969b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
-// fn textureNumLayers(texture: texture_2d_array<u32>) -> i32
-fn textureNumLayers_87953e() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_2d_array<u32>) -> u32
+fn textureNumLayers_8ac32a() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.dxc.hlsl
index 5c563c4..92e4a10 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 
-void textureNumLayers_87953e() {
+void textureNumLayers_8ac32a() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.fxc.hlsl
index 5c563c4..92e4a10 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 
-void textureNumLayers_87953e() {
+void textureNumLayers_8ac32a() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.glsl
similarity index 67%
rename from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.glsl
index 83bae63..083cd13 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
-void textureNumLayers_87953e() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_8ac32a() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
-void textureNumLayers_87953e() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_8ac32a() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
-void textureNumLayers_87953e() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_8ac32a() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_87953e();
+  textureNumLayers_8ac32a();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.msl
index 971482f..218af14 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_87953e(texture2d_array<uint, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_8ac32a(texture2d_array<uint, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::sample> tint_symbol_2) {
-  textureNumLayers_87953e(tint_symbol_2);
+  textureNumLayers_8ac32a(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_87953e(tint_symbol_4);
+  textureNumLayers_8ac32a(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_87953e(tint_symbol_5);
+  textureNumLayers_8ac32a(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.spvasm
similarity index 80%
copy from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.spvasm
index 109f2d0..febad27 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_87953e "textureNumLayers_87953e"
+               OpName %textureNumLayers_8ac32a "textureNumLayers_8ac32a"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,25 +38,25 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_87953e = OpFunction %void None %13
+%textureNumLayers_8ac32a = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_87953e
+         %29 = OpFunctionCall %void %textureNumLayers_8ac32a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_87953e
+         %36 = OpFunctionCall %void %textureNumLayers_8ac32a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_87953e
+         %39 = OpFunctionCall %void %textureNumLayers_8ac32a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.wgsl
new file mode 100644
index 0000000..65a1ae2
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
+
+fn textureNumLayers_8ac32a() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_8ac32a();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_8ac32a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_8ac32a();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl
index c67abfb..95138eb 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba32sint, write>) -> i32
-fn textureNumLayers_13b4ce() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32sint, write>) -> u32
+fn textureNumLayers_8bd987() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.dxc.hlsl
index 4f341b1..dcf3497 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_8bd987() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.fxc.hlsl
index 4f341b1..dcf3497 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_8bd987() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_8bd987();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.glsl
index f090067..9c3f6ec 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_13b4ce() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8bd987() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_13b4ce() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8bd987() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_13b4ce() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8bd987() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.msl
index d415304..004cbbb 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_f33005(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_8bd987(texture2d_array<int, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_f33005(tint_symbol_2);
+  textureNumLayers_8bd987(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_4);
+  textureNumLayers_8bd987(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_5);
+  textureNumLayers_8bd987(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.spvasm
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.spvasm
index ae6e277..bebc91d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_ff5e89 "textureNumLayers_ff5e89"
+               OpName %textureNumLayers_8bd987 "textureNumLayers_8bd987"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,30 +33,30 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba32i
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %24 = OpConstantNull %uint
          %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_ff5e89 = OpFunction %void None %13
+%textureNumLayers_8bd987 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_uint Function %24
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySize %v3uint %21
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %25
          %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %28 = OpFunctionCall %void %textureNumLayers_8bd987
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %35 = OpFunctionCall %void %textureNumLayers_8bd987
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %38 = OpFunctionCall %void %textureNumLayers_8bd987
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.wgsl
index 15c0d55..7183fb6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
-fn textureNumLayers_13b4ce() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_8bd987() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_13b4ce();
+  textureNumLayers_8bd987();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl
index 58e1dba..3f42b29 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba8unorm, write>) -> i32
-fn textureNumLayers_09d05d() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba8unorm, write>) -> u32
+fn textureNumLayers_8dbf23() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.dxc.hlsl
index c52cd47..4f752ed 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_8dbf23() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.fxc.hlsl
index c52cd47..4f752ed 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_8dbf23() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.glsl
index 25b7ded..9015e24 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_09d05d() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8dbf23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_09d05d() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8dbf23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_09d05d() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_8dbf23() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.msl
similarity index 75%
copy from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.msl
index 97a5498..8643e42 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_8dbf23(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_8dbf23(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_8dbf23(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_8dbf23(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.spvasm
index e70fdfc..9c3631f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_09d05d "textureNumLayers_09d05d"
+               OpName %textureNumLayers_8dbf23 "textureNumLayers_8dbf23"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,24 +38,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_09d05d = OpFunction %void None %12
+%textureNumLayers_8dbf23 = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_09d05d
+         %27 = OpFunctionCall %void %textureNumLayers_8dbf23
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_09d05d
+         %34 = OpFunctionCall %void %textureNumLayers_8dbf23
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_09d05d
+         %37 = OpFunctionCall %void %textureNumLayers_8dbf23
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.wgsl
index cede280..a64feba 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
-fn textureNumLayers_09d05d() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_8dbf23() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_8dbf23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl
index b58bc74..d7a18ea 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba32uint, write>) -> i32
-fn textureNumLayers_cd5dc8() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32uint, write>) -> u32
+fn textureNumLayers_9695c6() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.dxc.hlsl
index 6b49235..6ff2f32 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_9695c6() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.fxc.hlsl
index 6b49235..6ff2f32 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 
-void textureNumLayers_ee942f() {
+void textureNumLayers_9695c6() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_ee942f();
+  textureNumLayers_9695c6();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.glsl
index 95fdcf4..f8c145d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_cd5dc8() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_9695c6() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_cd5dc8() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_9695c6() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
-void textureNumLayers_cd5dc8() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_9695c6() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.msl
similarity index 74%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.msl
index 2fb0509..827321c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_ff5e89(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_9695c6(texture2d_array<uint, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_ff5e89(tint_symbol_2);
+  textureNumLayers_9695c6(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_4);
+  textureNumLayers_9695c6(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_ff5e89(tint_symbol_5);
+  textureNumLayers_9695c6(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.spvasm
similarity index 79%
copy from test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.spvasm
index 953a4a4..4d2ffb8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_22e53b "textureNumLayers_22e53b"
+               OpName %textureNumLayers_9695c6 "textureNumLayers_9695c6"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,29 +33,29 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 R32i
+       %uint = OpTypeInt 32 0
+         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_22e53b = OpFunction %void None %13
+%textureNumLayers_9695c6 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_22e53b
+         %27 = OpFunctionCall %void %textureNumLayers_9695c6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_22e53b
+         %34 = OpFunctionCall %void %textureNumLayers_9695c6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_22e53b
+         %37 = OpFunctionCall %void %textureNumLayers_9695c6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.wgsl
index 7fa1228..117a723 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
-fn textureNumLayers_cd5dc8() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_9695c6() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_cd5dc8();
+  textureNumLayers_9695c6();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 63205b7..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_9700fb() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_9700fb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_9700fb();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_9700fb();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 63205b7..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_9700fb() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_9700fb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_9700fb();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_9700fb();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.spvasm
deleted file mode 100644
index 4986494..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_9700fb "textureNumLayers_9700fb"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba16ui
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_9700fb = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_9700fb
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_9700fb
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_9700fb
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl
index 740fc82..b455e68 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba16float, write>) -> i32
-fn textureNumLayers_562013() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16float, write>) -> u32
+fn textureNumLayers_98a9cf() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.dxc.hlsl
index c52cd47..572767c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_98a9cf() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.fxc.hlsl
index c52cd47..572767c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_98a9cf() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_98a9cf();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.glsl
index 713a325..b8ccb95 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_562013() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_98a9cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_562013() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_98a9cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_562013() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_98a9cf() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.msl
similarity index 75%
copy from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
copy to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.msl
index 97a5498..b8c1954 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_98a9cf(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_98a9cf(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_98a9cf(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_98a9cf(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.spvasm
index 96b0fc2..1908b56 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_562013 "textureNumLayers_562013"
+               OpName %textureNumLayers_98a9cf "textureNumLayers_98a9cf"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,24 +38,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_562013 = OpFunction %void None %12
+%textureNumLayers_98a9cf = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_562013
+         %27 = OpFunctionCall %void %textureNumLayers_98a9cf
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_562013
+         %34 = OpFunctionCall %void %textureNumLayers_98a9cf
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_562013
+         %37 = OpFunctionCall %void %textureNumLayers_98a9cf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.wgsl
index c82f593..aa0b1f9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
-fn textureNumLayers_562013() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_98a9cf() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_562013();
+  textureNumLayers_98a9cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.dxc.hlsl
deleted file mode 100644
index d9cf500..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_a216d2() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_a216d2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_a216d2();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_a216d2();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.fxc.hlsl
deleted file mode 100644
index d9cf500..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_a216d2() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_a216d2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_a216d2();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_a216d2();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.msl
deleted file mode 100644
index 427fe4f..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_a216d2(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_a216d2(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<int, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_a216d2(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_a216d2(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.spvasm
deleted file mode 100644
index 2d82417..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 38
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_a216d2 "textureNumLayers_a216d2"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba8i
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
-         %24 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_a216d2 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_a216d2
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_a216d2
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_a216d2
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl
index c4a290d..9c1cbc6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
-// fn textureNumLayers(texture: texture_depth_2d_array) -> i32
-fn textureNumLayers_e653c0() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_depth_2d_array) -> u32
+fn textureNumLayers_a9d3f5() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.dxc.hlsl
index 07d21c4..fca4556 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray arg_0 : register(t0, space1);
 
-void textureNumLayers_e653c0() {
+void textureNumLayers_a9d3f5() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.fxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.fxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.fxc.hlsl
index 07d21c4..fca4556 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 Texture2DArray arg_0 : register(t0, space1);
 
-void textureNumLayers_e653c0() {
+void textureNumLayers_a9d3f5() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.glsl
similarity index 67%
rename from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.glsl
index c622a34..9e5f8bc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_a9d3f5() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_a9d3f5() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
-void textureNumLayers_e653c0() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_a9d3f5() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_e653c0();
+  textureNumLayers_a9d3f5();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.msl
similarity index 74%
rename from test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.msl
index ade75dd..74a0acb 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_e653c0(depth2d_array<float, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_a9d3f5(depth2d_array<float, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_2) {
-  textureNumLayers_e653c0(tint_symbol_2);
+  textureNumLayers_a9d3f5(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(depth2d_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_e653c0(tint_symbol_4);
+  textureNumLayers_a9d3f5(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_e653c0(tint_symbol_5);
+  textureNumLayers_a9d3f5(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.spvasm
similarity index 72%
copy from test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.spvasm
index 109f2d0..7d3120e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_87953e "textureNumLayers_87953e"
+               OpName %textureNumLayers_a9d3f5 "textureNumLayers_a9d3f5"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -32,47 +32,47 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 1 Unknown
+         %11 = OpTypeImage %float 2D 0 1 0 1 Unknown
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
-         %13 = OpTypeFunction %void
+         %12 = OpTypeFunction %void
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_87953e = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
+%textureNumLayers_a9d3f5 = OpFunction %void None %12
+         %15 = OpLabel
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %16 = OpCompositeExtract %uint %18 2
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_87953e
+         %29 = OpFunctionCall %void %textureNumLayers_a9d3f5
                OpReturnValue %5
                OpFunctionEnd
-%vertex_main = OpFunction %void None %13
+%vertex_main = OpFunction %void None %12
          %31 = OpLabel
          %32 = OpFunctionCall %v4float %vertex_main_inner
                OpStore %value %32
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
-%fragment_main = OpFunction %void None %13
+%fragment_main = OpFunction %void None %12
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_87953e
+         %36 = OpFunctionCall %void %textureNumLayers_a9d3f5
                OpReturn
                OpFunctionEnd
-%compute_main = OpFunction %void None %13
+%compute_main = OpFunction %void None %12
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_87953e
+         %39 = OpFunctionCall %void %textureNumLayers_a9d3f5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.wgsl
new file mode 100644
index 0000000..83afd90
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
+
+fn textureNumLayers_a9d3f5() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_a9d3f5();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_a9d3f5();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_a9d3f5();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl
similarity index 80%
rename from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl
index e4ee7aa..7d67267 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_cube_array<u32>;
 
-// fn textureNumLayers(texture: texture_cube_array<u32>) -> i32
-fn textureNumLayers_053df7() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_cube_array<u32>) -> u32
+fn textureNumLayers_c1eca9() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.dxc.hlsl
index ec08652..2a8173c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 
-void textureNumLayers_053df7() {
+void textureNumLayers_c1eca9() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.fxc.hlsl
index ec08652..2a8173c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 
-void textureNumLayers_053df7() {
+void textureNumLayers_c1eca9() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
index e995abb..367aaab 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
@@ -3,12 +3,12 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
-void textureNumLayers_053df7() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_c1eca9() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
   return vec4(0.0f);
 }
 
@@ -31,12 +31,12 @@
 precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
-void textureNumLayers_053df7() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_c1eca9() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
 }
 
 void main() {
@@ -53,12 +53,12 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
-void textureNumLayers_053df7() {
-  int res = textureSize(arg_0_1, 0).z;
+void textureNumLayers_c1eca9() {
+  uint res = uint(textureSize(arg_0_1, 0).z);
 }
 
 void compute_main() {
-  textureNumLayers_053df7();
+  textureNumLayers_c1eca9();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.msl
index 68ceeb4..49ce989 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_053df7(texturecube_array<uint, access::sample> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_c1eca9(texturecube_array<uint, access::sample> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texturecube_array<uint, access::sample> tint_symbol_2) {
-  textureNumLayers_053df7(tint_symbol_2);
+  textureNumLayers_c1eca9(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texturecube_array<uint, access::sample> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_053df7(tint_symbol_4);
+  textureNumLayers_c1eca9(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texturecube_array<uint, access::sample> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_053df7(tint_symbol_5);
+  textureNumLayers_c1eca9(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.spvasm
index a8336ca..a80fd6a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.spvasm
@@ -15,7 +15,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_053df7 "textureNumLayers_053df7"
+               OpName %textureNumLayers_c1eca9 "textureNumLayers_c1eca9"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -39,25 +39,25 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
+     %v3uint = OpTypeVector %uint 3
         %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
       %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %25 = OpConstantNull %int
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %25 = OpConstantNull %uint
          %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_053df7 = OpFunction %void None %13
+%textureNumLayers_c1eca9 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %25
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySizeLod %v3int %21 %int_0
-         %17 = OpCompositeExtract %int %19 2
+        %res = OpVariable %_ptr_Function_uint Function %25
+         %20 = OpLoad %11 %arg_0
+         %18 = OpImageQuerySizeLod %v3uint %20 %int_0
+         %17 = OpCompositeExtract %uint %18 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %26
          %28 = OpLabel
-         %29 = OpFunctionCall %void %textureNumLayers_053df7
+         %29 = OpFunctionCall %void %textureNumLayers_c1eca9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -69,11 +69,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %35 = OpLabel
-         %36 = OpFunctionCall %void %textureNumLayers_053df7
+         %36 = OpFunctionCall %void %textureNumLayers_c1eca9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %38 = OpLabel
-         %39 = OpFunctionCall %void %textureNumLayers_053df7
+         %39 = OpFunctionCall %void %textureNumLayers_c1eca9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.wgsl
new file mode 100644
index 0000000..bd0368e
--- /dev/null
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.wgsl
@@ -0,0 +1,21 @@
+@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
+
+fn textureNumLayers_c1eca9() {
+  var res : u32 = textureNumLayers(arg_0);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+  textureNumLayers_c1eca9();
+  return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+  textureNumLayers_c1eca9();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  textureNumLayers_c1eca9();
+}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.dxc.hlsl
deleted file mode 100644
index ca5a80c..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_cd5dc8() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_cd5dc8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_cd5dc8();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_cd5dc8();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.fxc.hlsl
deleted file mode 100644
index ca5a80c..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_cd5dc8() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_cd5dc8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_cd5dc8();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_cd5dc8();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.msl
deleted file mode 100644
index bff98ca..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_cd5dc8(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_cd5dc8(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<uint, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_cd5dc8(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_cd5dc8(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.spvasm
deleted file mode 100644
index 996f85e..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_cd5dc8 "textureNumLayers_cd5dc8"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba32ui
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_cd5dc8 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_cd5dc8
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_cd5dc8
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_cd5dc8
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.dxc.hlsl
deleted file mode 100644
index a8c82b0..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_d5b228() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_d5b228();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_d5b228();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_d5b228();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.fxc.hlsl
deleted file mode 100644
index a8c82b0..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_d5b228() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_d5b228();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_d5b228();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_d5b228();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.msl
deleted file mode 100644
index d2a1011..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_d5b228(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_d5b228(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<float, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_d5b228(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_d5b228(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl
index e7c4f20..979ac02 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba32float, write>) -> i32
-fn textureNumLayers_68a65b() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba32float, write>) -> u32
+fn textureNumLayers_d75a0b() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.dxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.dxc.hlsl
index c52cd47..f358a3d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_d75a0b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.fxc.hlsl
index c52cd47..f358a3d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 
-void textureNumLayers_09d05d() {
+void textureNumLayers_d75a0b() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_09d05d();
+  textureNumLayers_d75a0b();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.glsl
index 38cd9e7..597783b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_68a65b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_d75a0b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_68a65b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_d75a0b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
-void textureNumLayers_68a65b() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_d75a0b() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.msl
similarity index 75%
rename from test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.msl
index 97a5498..dfc443c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_562013(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_d75a0b(texture2d_array<float, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_562013(tint_symbol_2);
+  textureNumLayers_d75a0b(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_4);
+  textureNumLayers_d75a0b(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_562013(tint_symbol_5);
+  textureNumLayers_d75a0b(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.spvasm
similarity index 81%
rename from test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.spvasm
rename to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.spvasm
index 53d6ff2..7a3a47f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_68a65b "textureNumLayers_68a65b"
+               OpName %textureNumLayers_d75a0b "textureNumLayers_d75a0b"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -38,24 +38,24 @@
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %23 = OpConstantNull %uint
          %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_68a65b = OpFunction %void None %12
+%textureNumLayers_d75a0b = OpFunction %void None %12
          %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
+        %res = OpVariable %_ptr_Function_uint Function %23
          %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %16 = OpCompositeExtract %int %18 2
+         %18 = OpImageQuerySize %v3uint %20
+         %16 = OpCompositeExtract %uint %18 2
                OpStore %res %16
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %24
          %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_68a65b
+         %27 = OpFunctionCall %void %textureNumLayers_d75a0b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %12
@@ -67,11 +67,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %12
          %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_68a65b
+         %34 = OpFunctionCall %void %textureNumLayers_d75a0b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %12
          %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_68a65b
+         %37 = OpFunctionCall %void %textureNumLayers_d75a0b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.wgsl
index f7cfa50..c5e7e0e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
-fn textureNumLayers_68a65b() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_d75a0b() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_68a65b();
+  textureNumLayers_d75a0b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl
similarity index 84%
rename from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl
index 97533d2..647b9db 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl
@@ -1,4 +1,4 @@
-// Copyright 2021 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,23 +22,23 @@
 
 @group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, write>;
 
-// fn textureNumLayers(texture: texture_storage_2d_array<rgba16sint, write>) -> i32
-fn textureNumLayers_f33005() {
-  var res: i32 = textureNumLayers(arg_0);
+// fn textureNumLayers(texture: texture_storage_2d_array<rgba16sint, write>) -> u32
+fn textureNumLayers_de8087() {
+  var res: u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.dxc.hlsl
similarity index 78%
rename from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
rename to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.dxc.hlsl
index 4f341b1..4502c30 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.dxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_de8087() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.fxc.hlsl
similarity index 78%
copy from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
copy to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.fxc.hlsl
index 4f341b1..4502c30 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.fxc.hlsl
@@ -1,9 +1,9 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 
-void textureNumLayers_f33005() {
+void textureNumLayers_de8087() {
   int3 tint_tmp;
   arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
+  uint res = tint_tmp.z;
 }
 
 struct tint_symbol {
@@ -11,7 +11,7 @@
 };
 
 float4 vertex_main_inner() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return (0.0f).xxxx;
 }
 
@@ -23,12 +23,12 @@
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.glsl
similarity index 70%
rename from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.glsl
rename to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.glsl
index 541d029..6fb197a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.glsl
@@ -1,12 +1,12 @@
 #version 310 es
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_f33005() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_de8087() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 vec4 vertex_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return vec4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_f33005() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_de8087() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
 
 void main() {
@@ -37,12 +37,12 @@
 #version 310 es
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
-void textureNumLayers_f33005() {
-  int res = imageSize(arg_0).z;
+void textureNumLayers_de8087() {
+  uint res = uint(imageSize(arg_0).z);
 }
 
 void compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.msl
similarity index 74%
rename from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
rename to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.msl
index d415304..cd677f5 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.msl
@@ -1,8 +1,8 @@
 #include <metal_stdlib>
 
 using namespace metal;
-void textureNumLayers_f33005(texture2d_array<int, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
+void textureNumLayers_de8087(texture2d_array<int, access::write> tint_symbol_1) {
+  uint res = tint_symbol_1.get_array_size();
 }
 
 struct tint_symbol {
@@ -10,7 +10,7 @@
 };
 
 float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
-  textureNumLayers_f33005(tint_symbol_2);
+  textureNumLayers_de8087(tint_symbol_2);
   return float4(0.0f);
 }
 
@@ -22,12 +22,12 @@
 }
 
 fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_4);
+  textureNumLayers_de8087(tint_symbol_4);
   return;
 }
 
 kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_f33005(tint_symbol_5);
+  textureNumLayers_de8087(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.spvasm
similarity index 80%
copy from test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
copy to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.spvasm
index ae6e277..3065daf 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.spvasm
@@ -14,7 +14,7 @@
                OpName %value "value"
                OpName %vertex_point_size "vertex_point_size"
                OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_ff5e89 "textureNumLayers_ff5e89"
+               OpName %textureNumLayers_de8087 "textureNumLayers_de8087"
                OpName %res "res"
                OpName %vertex_main_inner "vertex_main_inner"
                OpName %vertex_main "vertex_main"
@@ -33,30 +33,30 @@
 %_ptr_Output_float = OpTypePointer Output %float
           %8 = OpConstantNull %float
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 Rgba8ui
+        %int = OpTypeInt 32 1
+         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
 %_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
       %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
        %void = OpTypeVoid
          %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Function_uint = OpTypePointer Function %uint
+         %24 = OpConstantNull %uint
          %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%textureNumLayers_ff5e89 = OpFunction %void None %13
+%textureNumLayers_de8087 = OpFunction %void None %13
          %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_uint Function %24
          %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
+         %19 = OpImageQuerySize %v3uint %21
+         %17 = OpCompositeExtract %uint %19 2
                OpStore %res %17
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %25
          %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %28 = OpFunctionCall %void %textureNumLayers_de8087
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %13
@@ -68,11 +68,11 @@
                OpFunctionEnd
 %fragment_main = OpFunction %void None %13
          %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %35 = OpFunctionCall %void %textureNumLayers_de8087
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %13
          %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_ff5e89
+         %38 = OpFunctionCall %void %textureNumLayers_de8087
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.wgsl
similarity index 61%
rename from test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl
rename to test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.wgsl
index 8d7eee4..fdab8ff 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
 @group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
-fn textureNumLayers_f33005() {
-  var res : i32 = textureNumLayers(arg_0);
+fn textureNumLayers_de8087() {
+  var res : u32 = textureNumLayers(arg_0);
 }
 
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
   return vec4<f32>();
 }
 
 @fragment
 fn fragment_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
 
 @compute @workgroup_size(1)
 fn compute_main() {
-  textureNumLayers_f33005();
+  textureNumLayers_de8087();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 6aca3c5..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_e31be1() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_e31be1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_e31be1();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_e31be1();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 6aca3c5..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<float4> arg_0 : register(u0, space1);
-
-void textureNumLayers_e31be1() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_e31be1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_e31be1();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_e31be1();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.msl
deleted file mode 100644
index 3b5b47f..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_e31be1(texture2d_array<float, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<float, access::write> tint_symbol_2) {
-  textureNumLayers_e31be1(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<float, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<float, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_e31be1(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<float, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_e31be1(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.spvasm
deleted file mode 100644
index 52ed923..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_e653c0 "textureNumLayers_e653c0"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-         %11 = OpTypeImage %float 2D 0 1 0 1 Unknown
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %12 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_0 = OpConstant %int 0
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_e653c0 = OpFunction %void None %12
-         %15 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySizeLod %v3int %20 %int_0
-         %16 = OpCompositeExtract %int %18 2
-               OpStore %res %16
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_e653c0
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %12
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %12
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_e653c0
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %12
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_e653c0
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl
deleted file mode 100644
index 601ce1f..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl
+++ /dev/null
@@ -1,21 +0,0 @@
-@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
-
-fn textureNumLayers_e653c0() {
-  var res : i32 = textureNumLayers(arg_0);
-}
-
-@vertex
-fn vertex_main() -> @builtin(position) vec4<f32> {
-  textureNumLayers_e653c0();
-  return vec4<f32>();
-}
-
-@fragment
-fn fragment_main() {
-  textureNumLayers_e653c0();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureNumLayers_e653c0();
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 6b49235..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_ee942f() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_ee942f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_ee942f();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_ee942f();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.msl
deleted file mode 100644
index d8f0821..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_ee942f(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_ee942f(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<uint, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_ee942f(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_ee942f(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.spvasm
deleted file mode 100644
index e0a11d9..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.spvasm
+++ /dev/null
@@ -1,78 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 39
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_ee942f "textureNumLayers_ee942f"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-       %uint = OpTypeInt 32 0
-         %11 = OpTypeImage %uint 2D 0 1 0 2 R32ui
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_ee942f = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %24
-         %21 = OpLoad %11 %arg_0
-         %19 = OpImageQuerySize %v3int %21
-         %17 = OpCompositeExtract %int %19 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %textureNumLayers_ee942f
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %textureNumLayers_ee942f
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %textureNumLayers_ee942f
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 4f341b1..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<int4> arg_0 : register(u0, space1);
-
-void textureNumLayers_f33005() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_f33005();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_f33005();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_f33005();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.spvasm
deleted file mode 100644
index a6a6224..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.spvasm
+++ /dev/null
@@ -1,77 +0,0 @@
-; SPIR-V
-; Version: 1.3
-; Generator: Google Tint Compiler; 0
-; Bound: 38
-; Schema: 0
-               OpCapability Shader
-               OpCapability ImageQuery
-               OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
-               OpEntryPoint Fragment %fragment_main "fragment_main"
-               OpEntryPoint GLCompute %compute_main "compute_main"
-               OpExecutionMode %fragment_main OriginUpperLeft
-               OpExecutionMode %compute_main LocalSize 1 1 1
-               OpName %value "value"
-               OpName %vertex_point_size "vertex_point_size"
-               OpName %arg_0 "arg_0"
-               OpName %textureNumLayers_f33005 "textureNumLayers_f33005"
-               OpName %res "res"
-               OpName %vertex_main_inner "vertex_main_inner"
-               OpName %vertex_main "vertex_main"
-               OpName %fragment_main "fragment_main"
-               OpName %compute_main "compute_main"
-               OpDecorate %value BuiltIn Position
-               OpDecorate %vertex_point_size BuiltIn PointSize
-               OpDecorate %arg_0 NonReadable
-               OpDecorate %arg_0 DescriptorSet 1
-               OpDecorate %arg_0 Binding 0
-      %float = OpTypeFloat 32
-    %v4float = OpTypeVector %float 4
-%_ptr_Output_v4float = OpTypePointer Output %v4float
-          %5 = OpConstantNull %v4float
-      %value = OpVariable %_ptr_Output_v4float Output %5
-%_ptr_Output_float = OpTypePointer Output %float
-          %8 = OpConstantNull %float
-%vertex_point_size = OpVariable %_ptr_Output_float Output %8
-        %int = OpTypeInt 32 1
-         %11 = OpTypeImage %int 2D 0 1 0 2 Rgba16i
-%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
-      %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
-       %void = OpTypeVoid
-         %13 = OpTypeFunction %void
-      %v3int = OpTypeVector %int 3
-%_ptr_Function_int = OpTypePointer Function %int
-         %23 = OpConstantNull %int
-         %24 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
-%textureNumLayers_f33005 = OpFunction %void None %13
-         %16 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %23
-         %20 = OpLoad %11 %arg_0
-         %18 = OpImageQuerySize %v3int %20
-         %17 = OpCompositeExtract %int %18 2
-               OpStore %res %17
-               OpReturn
-               OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %textureNumLayers_f33005
-               OpReturnValue %5
-               OpFunctionEnd
-%vertex_main = OpFunction %void None %13
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
-               OpStore %vertex_point_size %float_1
-               OpReturn
-               OpFunctionEnd
-%fragment_main = OpFunction %void None %13
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %textureNumLayers_f33005
-               OpReturn
-               OpFunctionEnd
-%compute_main = OpFunction %void None %13
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %textureNumLayers_f33005
-               OpReturn
-               OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 5ded29d..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_fcec98() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_fcec98();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_fcec98();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_fcec98();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 5ded29d..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_fcec98() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_fcec98();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_fcec98();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_fcec98();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.msl b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.msl
deleted file mode 100644
index 6233574..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <metal_stdlib>
-
-using namespace metal;
-void textureNumLayers_fcec98(texture2d_array<uint, access::write> tint_symbol_1) {
-  int res = int(tint_symbol_1.get_array_size());
-}
-
-struct tint_symbol {
-  float4 value [[position]];
-};
-
-float4 vertex_main_inner(texture2d_array<uint, access::write> tint_symbol_2) {
-  textureNumLayers_fcec98(tint_symbol_2);
-  return float4(0.0f);
-}
-
-vertex tint_symbol vertex_main(texture2d_array<uint, access::write> tint_symbol_3 [[texture(0)]]) {
-  float4 const inner_result = vertex_main_inner(tint_symbol_3);
-  tint_symbol wrapper_result = {};
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-fragment void fragment_main(texture2d_array<uint, access::write> tint_symbol_4 [[texture(0)]]) {
-  textureNumLayers_fcec98(tint_symbol_4);
-  return;
-}
-
-kernel void compute_main(texture2d_array<uint, access::write> tint_symbol_5 [[texture(0)]]) {
-  textureNumLayers_fcec98(tint_symbol_5);
-  return;
-}
-
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.dxc.hlsl
deleted file mode 100644
index 4ff6d2c..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.dxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_ff5e89() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_ff5e89();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_ff5e89();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_ff5e89();
-  return;
-}
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.fxc.hlsl
deleted file mode 100644
index 4ff6d2c..0000000
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.fxc.hlsl
+++ /dev/null
@@ -1,34 +0,0 @@
-RWTexture2DArray<uint4> arg_0 : register(u0, space1);
-
-void textureNumLayers_ff5e89() {
-  int3 tint_tmp;
-  arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
-  int res = tint_tmp.z;
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  textureNumLayers_ff5e89();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
-void fragment_main() {
-  textureNumLayers_ff5e89();
-  return;
-}
-
-[numthreads(1, 1, 1)]
-void compute_main() {
-  textureNumLayers_ff5e89();
-  return;
-}